Maison > Java > javaDidacticiel > Comment migrer de KML vers JSON pour récupérer les données Google Directions ?

Comment migrer de KML vers JSON pour récupérer les données Google Directions ?

Barbara Streisand
Libérer: 2024-11-25 11:36:45
original
966 Les gens l'ont consulté

How to Migrate from KML to JSON for Retrieving Google Directions Data?

Problème lors de la récupération de Google Directions à l'aide de données KML

Google a cessé de récupérer Google Directions à l'aide de données KML depuis le 27 juillet 2012. Cela signifie que le code utilisé pour extraire les directions de Google en analysant le fichier KML n'est plus fonctionnel.

Solution :

Migrez votre code pour utiliser JSON au lieu de KML. Pour faciliter cette transition, j'ai créé les classes suivantes :

  • Parser.java : Définit une interface pour analyser les données Google Directions.
  • XMLParser. java : Implémente une classe abstraite pour analyser les données XML à partir d'un URL.
  • Segment.java : Représente un segment d'un itinéraire, y compris les points, les instructions de virage, la longueur et la distance.
  • Route.java : Représente un itinéraire, y compris les points, les instructions de virage, la longueur, la polyligne et autres métadonnées.
  • GoogleParser.java : Implémente un analyseur concret pour les données Google JSON.
  • RouteOverlay.java : Dessine l'itinéraire sur un map.

Mise en œuvre :

  1. Remplacez votre code pour extraire les directions de KML par la fonction suivante :
private Route directions(final GeoPoint start, final GeoPoint dest) {
    Parser parser;
    String jsonURL = "https://developers.google.com/maps/documentation/directions/#JSON";
    final StringBuffer sBuf = new StringBuffer(jsonURL);
    sBuf.append("origin=");
    sBuf.append(start.getLatitudeE6()/1E6);
    sBuf.append(',');
    sBuf.append(start.getLongitudeE6()/1E6);
    sBuf.append("&destination=");
    sBuf.append(dest.getLatitudeE6()/1E6);
    sBuf.append(',');
    sBuf.append(dest.getLongitudeE6()/1E6);
    sBuf.append("&sensor=true&mode=driving");
    parser = new GoogleParser(sBuf.toString());
    Route r =  parser.parse();
    return r;
}
Copier après la connexion
  1. Dans la méthode onCreate(), ajoutez ce qui suit code :
MapView mapView = (MapView) findViewById(R.id.mapview);
Route route = directions(new GeoPoint((int)(26.2*1E6),(int)(50.6*1E6)), new GeoPoint((int)(26.3*1E6),(int)(50.7*1E6)));
RouteOverlay routeOverlay = new RouteOverlay(route, Color.BLUE);
mapView.getOverlays().add(routeOverlay);
mapView.invalidate();
Copier après la connexion

Remarque : Il est recommandé d'utiliser la fonction directions() dans une AsyncTask pour éviter les opérations réseau sur le thread de l'interface utilisateur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal