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 de importação de KML do Google Maps

  1. Introdução
  2. Adicionar uma camada KML
  3. Limpar uma camada KML
  4. Acessar contêineres KML
  5. Acessar marcadores KML e sobreposições de solo KML
  6. Acessar propriedades KML
  7. Recursos permitidos do KML

Introdução

O KML é uma extensão do formato de dados XML e representa dados geográficos em um mapa. O uso desse utilitário permite converter objetos KML em formas geográficas e renderizá-las como uma camada sobre um mapa. Para adicionar e remover dados KML do mapa, chame addLayerToMap() e clearLayerFromMap(), respectivamente. Para acessar propriedades em um objeto KML, chame getProperties() em qualquer Placemark, GroundOverlay, Document ou Folder.

Adicionar uma camada KML ao mapa

Para adicionar uma camada de dados ao mapa, crie primeiro uma instância da classe KmlLayer. Há duas formas de instanciar uma KmlLayer.

Para importar e renderizar um conjunto de dados KML de um recurso local são necessários:

  • Um objeto GoogleMap onde a camada será renderizada.
  • Um arquivo de recursos local contendo os dados KML.
  • Um objeto Context, necessário para abrir um arquivo de recursos local.
KmlLayer layer = new KmlLayer(getMap(), R.raw.kmlFile, getApplicationContext());

Para importar e renderizar um conjunto de dados KML de um stream local são necessários:

  • Um objeto GoogleMap onde a camada será renderizada.
  • Um InputStream contendo os dados KML.
  • Um objeto Context, necessário para abrir recursos locais.
KmlLayer layer = new KmlLayer(getMap(), kmlInputStream, getApplicationContext());

Após criar uma KmlLayer, chame addLayerToMap() para adicionar os dados importados ao mapa.

layer.addLayerToMap();

Limpar uma camada KML

Vamos supor que você criou esta KmlLayer:

KmlLayer layer = new KmlLayer(getMap(), kmlInputStream, getApplicationContext());
 

Para remover a camada do mapa, chame removeLayerFromMap():

layer.removeLayerFromMap();

Acessar contêineres KML

Para acessar qualquer contêiner adicionado à camada, chame getContainers() na camada que você criou. Para verificar se qualquer contêiner tem contêineres aninhados, chame hasContainers(). Para acessar esses contêineres aninhados, de forma semelhante como você os acessa na sua camada, chame getContainers().

Para acessar contêineres que não estão aninhados em uma KmlLayer ou em um KmlContainer:

for (KmlContainer containers : layer.getContainers())
  // Do something to container
}

Para acessar contêineres que estão aninhados em uma KmlLayer ou em um KmlContainer:

Iterable containers = layer.getContainers();
  public void accessContainers(containers) {
    for (KmlContainer container : containers ) {
    // Do something to container
    if (container.hasContainers()) {
      accessContainers(container.getContainers());
    }
  }
}

Acessar marcadores KML e sobreposições de solo KML

Para acessar qualquer marcador ou sobreposição de solo adicionado à camada, chame getPlacemarks() ou getGroundOverlays() em uma camada ou contêiner. Será retornado um iterável de KmlPlacemarks ou KmlGroundOverlays, respectivamente.

Por exemplo, para acessar objetos KmlPlacemark de uma camada:

for (KmlPlacemark placemark : layer.getPlacemarks()) {
  // Do something to Placemark
}

Acessar propriedades KML

Para acessar qualquer propriedade em um contêiner ou marcador, chame getProperty() e atribua a ela uma chave de propriedade. Também é possível chamar hasProperty() para verificar sua existência. Este exemplo mostra como recuperar o valor de propriedade "name" de um contêiner, se existir.

for (KmlContainer container : layer.getContainers()) {
  if (container.hasProperty("name")) {
    System.out.println(container.getProperty("name")):
  }
}

Ver o aplicativo de demonstração

Para obter um exemplo da importação de um arquivo KML para usá-lo na criação de uma camada, consulte KmlDemoActivity 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.

Recursos permitidos do KML

Elemento KML Permitido? Comentário
<address> parcialmente Armazenado como um valor de propriedade
<AddressDetails> não
<Alias> no
<altitude> no
<altitudeMode> no
<atom:author> no
<atom:link> no
<atom:name> no
<BalloonStyle> parcialmente somente <text> é permitido
<begin> N/A <TimeSpan> não é permitido
<bgColor> no
<bottomFov> N/A <PhotoOverlay> não é permitido
<Camera> no
<Change> parcialmente somente alterações de estilo são permitidas
<color> parcialmente inclui #AABBGGRR e #BBGGRR; não é permitido em <ScreenOverlay> e <GroundOverlay>
<colorMode> sim
<cookie> no <NetworkLinkControl> não é permitido
<coordinates> sim
<Create> no
<Data> no
<Delete> no
<description> sim Somente texto simples, conteúdo HTML não é permitido
<displayMode> no
<displayName> no
<Document> sim
<drawOrder> sim
<east> sim
<end> N/A <TimeSpan> não é permitido
<expires> no <NetworkLinkControl> não é permitido
<ExtendedData> parcialmente somente <Data> sem tipo; <SimpleData>, <Schema> e substituições de entidade de form$[dataName] não são permitidos.
<extrude> no
<fill> sim
<flyToView> no <NetworkLinkControl> não é permitido
<Folder> sim
<gridOrigin> N/A <PhotoOverlay> não é permitido
<GroundOverlay> sim
<heading> sim
<hotSpot> sim
<href> sim
<httpQuery> no
<Icon> sim
<IconStyle> sim
<ImagePyramid> N/A <PhotoOverlay> não é permitido
<innerBoundaryIs> sim implicitamente da ordem <LinearRing>
<ItemIcon> N/A <ListStyle> não é permitido
<key> sim
<kml> sim
<LabelStyle> no
<latitude> sim
<LatLonAltBox> no
<LatLonBox> sim
<leftFov> N/A <PhotoOverlay> não é permitido
<LinearRing> sim
<LineString> sim
<LineStyle> sim
<Link> no
<linkDescription> N/A <NetworkLinkControl> não é permitido
<linkName> N/A <NetworkLinkControl> não é permitido
<linkSnippet> N/A <NetworkLinkControl> não é permitido
<listItemType> N/A <ListStyle> não é permitido
<ListStyle> no
<Location> N/A <Model> não é permitido
<Lod> sim
<longitude> sim
<LookAt> no
<maxAltitude> no
<maxFadeExtent> no
<maxHeight> N/A <PhotoOverlay> não é permitido
<maxLodPixels> no
<maxSessionLength> no
<maxWidth> N/A <PhotoOverlay> não é permitido
<message> no
<minAltitude> no
<minFadeExtent> no
<minLodPixels> no
<minRefreshPeriod> no <NetworkLink>
<Model> no
<MultiGeometry> sim
<name> sim
<near> N/A <PhotoOverlay> não é permitido
<NetworkLink> no
<NetworkLinkControl> no
<north> sim
<open> sim Armazenado como um valor de propriedade
<Orientation> N/A <Model> não é permitido
<outerBoundaryIs> sim implicitamente da ordem <LinearRing>
<outline> sim
<overlayXY> no
<Pair> sim
<phoneNumber> parcialmente Armazenado como um valor de propriedade
<PhotoOverlay> no
<Placemark> sim
<Point> sim
<Polygon> sim
<PolyStyle> sim
<range> sim
<refreshInterval> no
<refreshMode> no
<refreshVisibility> no
<Region> sim
<ResourceMap> N/A <Model> não é permitido
<rightFov> N/A <PhotoOverlay> não é permitido
<roll> N/A <Camera> e <Model> não são permitidos
<rotation> sim
<rotationXY> no
<Scale> N/A <Model> não é permitido
<scale> sim
<Schema> no
<SchemaData> no
<ScreenOverlay> no
<screenXY> N/A <ScreenOverlay> não é permitido
<shape> N/A <PhotoOverlay> não é permitido
<SimpleData> N/A <SchemaData> não são permitidos
<SimpleField> N/A <Schema> não são permitidos
<size> sim
<Snippet> no
<south> sim
<state> N/A <ListStyle> não é compatível
<Style> sim
<StyleMap> parcialmente Estilo realçado não fornecido. StyleMaps em linha não são permitidos
<styleUrl> sim
<targetHref> no <Alias> não é permitido
<tessellate> no
<text> sim
<textColor> no
<tileSize> N/A <PhotoOverlay> não é permitido
<tilt> no
<TimeSpan> no
<TimeStamp> no
<topFov> N/A <PhotoOverlay> não é permitido
<Update> N/A <NetworkLinkControl> não é permitido
<value> sim
<viewBoundScale> no
<viewFormat> no
<viewRefreshMode> no
<viewRefreshTime> no
<ViewVolume> N/A <PhotoOverlay> não é permitido
<visibility> sim
<west> sim
<when> N/A <TimeStamp> não é permitido
<width> sim

Enviar comentários sobre…

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