Vous êtes prêt !

Pour passer à l'étape de développement, accédez à notre documentation pour les développeurs.

Activer Google Maps Android API

Pour commencer, nous allons vous guider à travers la console Google Developers et effectuer deux ou trois petites choses :

  1. Créer ou choisir un projet
  2. Activer Google Maps Android API
  3. Créer les clés appropriées
Continuer

Utilitaire d'importation KML de Google Maps

  1. Introduction
  2. Ajouter un calque KML
  3. Effacer un calque KML
  4. Accéder aux conteneurs KML
  5. Accéder aux repères KML et aux superpositions au sol KML
  6. Accéder aux propriétés KML
  7. Fonctionnalités KML prises en charge

Introduction

KML est une extension du format de données XML et représente des données géographiques sur une carte. Cet utilitaire permet de convertir des objets KML en formes géographiques et d'effectuer le rendu sous forme de calque au-dessus d'une carte. Pour ajouter et supprimer vos données KML de la carte, appelez respectivement addLayerToMap() et removeLayerFromMap(). Pour accéder aux propriétés d'un objet KML, appelez getProperties() sur n'importe quel élément Placemark, GroundOverlay, Document ou Folder.

Ajouter un calque KML à la carte

Pour ajouter un calque de données à la carte, vous devez d'abord créer une instance de la classe KmlLayer. Il y a deux moyens d'instancier un KmlLayer.

Pour importer et effectuer le rendu d'un jeu de données KML à partir d'une ressource locale, il vous faut :

  • Un objet GoogleMap où le rendu du calque doit être effectué.
  • Un fichier de ressources local contenant les données KML.
  • Un objet Context, nécessaire pour ouvrir un fichier de ressources local.
KmlLayer layer = new KmlLayer(getMap(), R.raw.kmlFile, getApplicationContext());

Pour importer et effectuer le rendu d'un jeu de données KML à partir d'un flux local, il vous faut :

  • Un objet GoogleMap où le rendu du calque doit être effectué.
  • Un InputStream contenant les données KML.
  • Un objet Context, nécessaire pour ouvrir les ressources locales.
KmlLayer layer = new KmlLayer(getMap(), kmlInputStream, getApplicationContext());

Après avoir créé un calque KmlLayer, appelez addLayerToMap()() pour ajouter les données importées à la carte.

layer.addLayerToMap();

Effacer un calque KML

Supposons que vous avez créé ce calque KmlLayer :

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

Pour supprimer le calque de la carte, appelez removeLayerFromMap() :

layer.removeLayerFromMap();

Accéder aux conteneurs KML

Pour accéder aux conteneurs qui ont été ajoutés à votre calque, vous pouvez appeler getContainers() sur le calque que vous avez créé. Pour savoir si un conteneur contient des conteneurs imbriqués, vous pouvez appeler hasContainers(). Pour accéder à ces conteneurs imbriqués, comme vous pouvez le faire dans votre calque, vous pouvez appeler getContainers()

Pour accéder aux conteneurs qui ne sont pas imbriqués dans un KmlLayer ou un KmlContainer :

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

Pour accéder aux conteneurs qui sont imbriqués dans un KmlLayer ou un KmlContainer :

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

Accéder aux repères KML et aux superpositions au sol KML

Pour accéder à un repère ou à une superposition au sol qui a été ajouté(e) au calque, vous pouvez appeler getPlacemarks() ou getGroundOverlays() sur un calque ou un conteneur. Le fait d'appeler l'une ou l'autre de ces méthodes renverra un itérable de KmlPlacemarks ou KmlGroundOverlays respectivement.

Par exemple, pour accéder aux objets KmlPlacemark à partir d'un calque :

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

Accéder aux propriétés KML

Pour accéder à n'importe quelle propriété d'un conteneur ou d'un repère, appelez getProperty() et indiquez une clé de propriété. Vous pouvez également appeler hasProperty() pour vérifier qu'elle existe. Cet échantillon montre comment extraire le « nom » de la valeur de propriété d'un conteneur, le cas échéant.

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

Voir l'application de démo

Pour voir un exemple d'importation de fichier KML et de création de calque à partir de ce fichier, consultez l'activité KmlDemoActivity dans l'application de démo fournie avec la bibliothèque d'utilitaires. Le guide de configuration vous explique comment exécuter l'application de démo.

Fonctionnalités KML prises en charge

Élément KML Prise en charge ? Commentaire
<address> partiellement Stocké en tant que valeur de propriété
<AddressDetails> non
<Alias> non
<altitude> non
<altitudeMode> non
<atom:author> non
<atom:link> non
<atom:name> non
<BalloonStyle> partiellement seul <text> est pris en charge
<begin> S/O <TimeSpan> non pris en charge
<bgColor> non
<bottomFov> S/O <PhotoOverlay> non pris en charge
<Camera> non
<Change> partiellement seuls les changements de style sont pris en charge
<color> partiellement inclut #AABBGGRR et #BBGGRR ; non pris en charge dans <ScreenOverlay> et <GroundOverlay>
<colorMode> oui
<cookie> non <NetworkLinkControl> non pris en charge
<coordinates> oui
<Create> non
<Data> non
<Delete> non
<description> oui Texte brut uniquement, le contenu HTML n'est pas pris en charge
<displayMode> non
<displayName> non
<Document> oui
<drawOrder> oui
<east> oui
<end> S/O <TimeSpan> non pris en charge
<expires> non <NetworkLinkControl> non pris en charge
<ExtendedData> partiellement <Data> non typées uniquement, aucun <SimpleData> ou <Schema> ni aucun changement d'entité form$[dataName] n'est pris en charge.
<extrude> non
<fill> oui
<flyToView> non <NetworkLinkControl> non pris en charge
<Folder> oui
<gridOrigin> S/O <PhotoOverlay> n'est pas pris en charge
<GroundOverlay> oui
<heading> oui
<hotSpot> oui
<href> oui
<httpQuery> non
<Icon> oui
<IconStyle> oui
<ImagePyramid> S/O <PhotoOverlay> non pris en charge
<innerBoundaryIs> oui implicitement dans l'ordre <LinearRing>
<ItemIcon> S/O <ListStyle> non pris en charge
<key> oui
<kml> oui
<LabelStyle> non
<latitude> oui
<LatLonAltBox> non
<LatLonBox> oui
<leftFov> S/O <PhotoOverlay> non pris en charge
<LinearRing> oui
<LineString> oui
<LineStyle> oui
<Link> non
<linkDescription> S/O <NetworkLinkControl> non pris en charge
<linkName> S/O <NetworkLinkControl> non pris en charge
<linkSnippet> S/O <NetworkLinkControl> non pris en charge
<listItemType> S/O <ListStyle> non pris en charge
<ListStyle> non
<Location> S/O <Model> non pris en charge
<Lod> oui
<longitude> oui
<LookAt> non
<maxAltitude> non
<maxFadeExtent> non
<maxHeight> S/O <PhotoOverlay> non pris en charge
<maxLodPixels> non
<maxSessionLength> non
<maxWidth> S/O <PhotoOverlay> non pris en charge
<message> non
<minAltitude> non
<minFadeExtent> non
<minLodPixels> non
<minRefreshPeriod> non <NetworkLink>
<Model> non
<MultiGeometry> oui
<name> oui
<near> S/O <PhotoOverlay> non pris en charge
<NetworkLink> non
<NetworkLinkControl> non
<north> oui
<open> oui Stocké en tant que valeur de propriété
<Orientation> S/O <Model> non pris en charge
<outerBoundaryIs> oui implicitement dans l'ordre <LinearRing>
<outline> oui
<overlayXY> non
<Pair> oui
<phoneNumber> partiellement Stocké en tant que valeur de propriété
<PhotoOverlay> non
<Placemark> oui
<Point> oui
<Polygon> oui
<PolyStyle> oui
<range> oui
<refreshInterval> non
<refreshMode> non
<refreshVisibility> non
<Region> oui
<ResourceMap> S/O <Model> non pris en charge
<rightFov> S/O <PhotoOverlay> non pris en charge
<roll> S/O <Camera> et <Model> non pris en charge
<rotation> oui
<rotationXY> non
<Scale> S/O <Model> non pris en charge
<scale> oui
<Schema> non
<SchemaData> non
<ScreenOverlay> non
<screenXY> S/O <ScreenOverlay> non pris en charge
<shape> S/O <PhotoOverlay> non pris en charge
<SimpleData> S/O <SchemaData> non pris en charge
<SimpleField> S/O <Schema> non pris en charge
<size> oui
<Snippet> non
<south> oui
<state> S/O <ListStyle> non pris en charge
<Style> oui
<StyleMap> partiellement Style en surbrillance non fourni. Inline StyleMaps non pris en charge
<styleUrl> oui
<targetHref> non <Alias> non pris en charge
<tessellate> non
<text> oui
<textColor> non
<tileSize> S/O <PhotoOverlay> non pris en charge
<tilt> non
<TimeSpan> non
<TimeStamp> non
<topFov> S/O <PhotoOverlay> non pris en charge
<Update> S/O <NetworkLinkControl> non pris en charge
<value> oui
<viewBoundScale> non
<viewFormat> non
<viewRefreshMode> non
<viewRefreshTime> non
<ViewVolume> S/O <PhotoOverlay> non pris en charge
<visibility> oui
<west> oui
<when> S/O <TimeStamp> non pris en charge
<width> oui

Envoyer des commentaires concernant…

Google Maps Android API
Google Maps Android API
Besoin d'aide ? Consultez notre page d'assistance.