Pronto!

Para começar a desenvolver, acesse nossa documentação do desenvolvedor.

Ative a Google Maps Android API

Para começar, orientaremos você pelo Google Developers Console para realizar algumas atividades:

  1. Criar ou selecionar um projeto
  2. Ative a Google Maps Android API
  3. Criar chaves apropriadas
Continuar

Utilitário GeoJSON do Google Maps Android

  1. Introdução
  2. Adicionar uma GeoJsonLayer ao mapa
  3. Remover a GeoJsonLayer
  4. Adicionar e remover um GeoJsonFeature
  5. Acessar os GeoJsonFeatures e suas propriedades
  6. Aplicar estilo à GeoJsonLayer e aos GeoJsonFeatures
  7. Ver o aplicativo de demonstração

Introdução

O GeoJSON é uma extensão do formato de dados JSON e representa dados geográficos. O uso desse utilitário permite armazenar componentes geográficos no formato GeoJSON e renderizá-los como uma camada sobre o mapa. Para adicionar e remover dados GeoJSON do mapa, chame addLayer() e clearLayer(), respectivamente. Da mesma forma, é possível adicionar e remover recursos individuais chamando addFeature() e removeFeature() e passando um objeto GeoJsonFeature. Se você quiser acessar os recursos, chame getFeatures() para obter um iterável de todos os objetos GeoJsonFeature adicionados à camada.

Também é possível definir estilos padrão para aplicação a recursos antes de adicioná-los à camada chamando getDefaultPointStyle(), getDefaultLineStringStyle() ou getDefaultPolygonStyle() e definindo opções de estilo individualmente. Como alternativa, você pode definir o estilo de um GeoJsonFeature específico chamando setPointStyle(), setLineStringStyle() ou setPolygonStyle() no recurso e passando o objeto de estilo relevante.

Adicionar uma GeoJsonLayer ao mapa

Para adicionar uma camada do GeoJson ao mapa, crie primeiro uma instância da classe GeoJsonLayer. Há duas formas de instanciar a GeoJsonLayer.

Para importá-la de um JSONObject, são necessários:

  • Objeto GoogleMap onde a camada será renderizada
  • JSONObject contendo os dados GeoJSON a serem adicionados à camada
GeoJsonLayer layer = new GeoJsonLayer(getMap(), geoJsonData);

Para importá-la de um arquivo JSONObject local, são necessários:

  • Objeto GoogleMap onde a camada será renderizada
  • Arquivo de recursos local contendo os dados GeoJSON
  • Objeto Context, necessário para abrir um arquivo de recursos local
GeoJsonLayer layer = new GeoJsonLayer(getMap(), R.raw.geoJsonFile,
getApplicationContext());

Após criar a GeoJsonLayer, chame addLayer() para adicionar os dados importados ao mapa:

layer.addLayer();

Remover a GeoJsonLayer

Vamos supor que você adicionou esta camada

GeoJsonLayer layer = new GeoJsonLayer(getMap(), geoJsonData);

Para limpar a GeoJsonLayer, chame clearLayer()

layer.clearLayer();

Adicionar e remover um GeoJsonFeature

No GeoJSON, um recurso tem o tipo "feature". Ele contém uma geometria, um membro de propriedade e, opcionalmente, uma caixa limitadora ou um id.

É possível criar objetos GeoJsonFeature individualmente e adicioná-los à GeoJsonLayer.

Vamos supor que você criou um recurso contendo um ponto em 0, 0 com uma entrada em suas propriedades e sem caixa limitadora.

GeoJsonPoint point = new Point(new LatLng(0, 0));
HashMap<String, String> properties = new HashMap<String, String>();
properties.put(“Ocean”, “South Atlantic”);
GeoJsonFeature pointFeature = new GeoJsonFeature(point, “Origin”, properties, null);

Para adicionar um recurso à camada, chame addFeature() e passe o recurso a adicionar.

layer.addFeature(pointFeature);

Para remover um recurso após adicioná-lo à camada, chame removeFeature() e passe o recurso a remover.

layer.removeFeature(pointFeature);

Acessar os GeoJsonFeatures e suas propriedades

Para acessar todos os GeoJsonFeatures adicionados à camada, chame getFeatures() na GeoJsonLayer que você criou. Será retornado um iterável de GeoJsonFeatures, que pode ser acessado usando um loop for-each, como mostrado a seguir.

for (GeoJsonFeature feature : layer.getFeatures()) {
  // do something to the feature
}

Use os métodos hasProperty() e getProperty() juntamente com o método getFeatures() para verificar se cada recurso armazenado tem uma determinada propriedade e acessá-la, se existir.

GeoJsonPoint point = new Point(new LatLng(0, 0));
HashMap<String, String> properties = new HashMap<String, String>();
properties.put(“Ocean”, “South Atlantic”);
GeoJsonFeature pointFeature = new GeoJsonFeature(point, “Origin”, properties, null);
for (GeoJsonFeature feature : layer.getFeatures()) {
  if (feature.hasProperty(“Ocean”)) {
    String oceanProperty = feature.getProperty(“Ocean”);
  }
}

Aplicar estilo à GeoJsonLayer e aos GeoJsonFeatures

Você pode definir estilos padrão a uma GeoJsonLayer ou a recursos individuais na camada.

Estilos padrão

Em uma GeoJsonLayer, é possível definir estilos padrão para qualquer ponto, linestring e polígono adicionados à camada. Os estilos padrão serão aplicados apenas se o recurso não tiver um estilo definido para nenhuma de suas geometrias. Todas as alterações efetuadas no estilo padrão serão também refletidas em todos os recursos que usam o estilo padrão.

Veja a seguir as etapas a serem aplicadas a um estilo padrão

  1. Recupere o objeto de estilo padrão relevante, que pode ser um GeoJsonPointStyle, um GeoJsonLineStringStyle ou um GeoJsonPolygonStyle.
  2. Aplique as opções desejadas ao estilo.

Por exemplo, a amostra de código a seguir mostra como modificar o estilo de ponto padrão para tornar os pontos arrastáveis com um título e um fragmento.

GeoJsonPointStyle pointStyle = layer.getDefaultPointStyle();
pointStyle.setDraggable(true);
pointStyle.setTitle(“Hello, World!”);
pointStyle.setSnippet(“I am a draggable marker”);

Estilos específicos de um GeoJsonFeature

Como alternativa, você pode aplicar estilo a recursos individuais na camada. Veja a seguir as etapas para aplicar um estilo a um GeoJsonFeature

  1. Crie o objeto de estilo relevante, que pode ser um GeoJsonPointStyle, um GeoJsonLineStringStyle ou um GeoJsonPolygonStyle
  2. Aplique as opções desejadas ao estilo
  3. Passe o objeto de estilo ao método relevante no GeoJsonFeature, que pode ser setPointStyle(), setLineStringStyle() ou setPolygonStyle()

Por exemplo, esta é a forma de personalizar um estilo linestring de um GeoJsonFeature para que a cor seja vermelho.

// Create a new feature containing a linestring
ArrayList<LatLng> lineStringArray = new ArrayList<LatLng>();
lineStringArray.add(new LatLng(0, 0));
lineStringArray.add(new LatLng(50, 50));
GeoJsonLineString lineString = new GeoJsonLineString(lineStringArray);
GeoJsonFeature lineStringFeature = new GeoJsonFeature(lineString, null, null, null);

// Set the color of the linestring to red
GeoJsonLineStringStyle lineStringStyle = new GeoJsonLineStringStyle();
lineStringStyle.setColor(Color.RED);

// Set the style of the feature
lineStringFeature.setLineStringStyle(lineStringStyle);

Ver o aplicativo de demonstração

Para obter um exemplo da importação de um arquivo GeoJSON de um URL para usá-lo na criação de uma camada, consulte GeoJsonDemoActivity no aplicativo de demonstração fornecido com a biblioteca de utilitários. O guia de configuração mostra como executar o aplicativo de demonstração.

Enviar comentários sobre…

Google Maps Android API
Google Maps Android API
Precisa de ajuda? Acesse nossa página de suporte.