Heim  >  Artikel  >  Java  >  Wie migriere ich von KML zu JSON, um Google Directions-Daten abzurufen?

Wie migriere ich von KML zu JSON, um Google Directions-Daten abzurufen?

Barbara Streisand
Barbara StreisandOriginal
2024-11-25 11:36:45916Durchsuche

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

Probleme beim Abrufen von Google Directions mithilfe von KML-Daten

Google hat den Abruf von Google Directions mithilfe von KML-Daten seit dem 27. Juli 2012 eingestellt. Dies bedeutet den Code Wird nicht mehr zum Extrahieren von Wegbeschreibungen aus Google durch Parsen der KML-Datei verwendet funktionsfähig.

Lösung:

Migrieren Sie Ihren Code, um JSON anstelle von KML zu verwenden. Um diesen Übergang zu erleichtern, habe ich die folgenden Klassen erstellt:

  • Parser.java: Definiert eine Schnittstelle zum Parsen von Google Directions-Daten.
  • XMLParser. java: Implementiert eine abstrakte Klasse zum Parsen von XML-Daten aus einem bereitgestellten URL.
  • Segment.java: Stellt einen Abschnitt einer Route dar, einschließlich Punkten, Abbiegeanweisungen, Länge und Entfernung.
  • Route.java: Stellt eine Route dar, einschließlich Punkten, Abbiegeanweisungen, Länge, Polylinie und anderem Metadaten.
  • GoogleParser.java: Implementiert einen konkreten Parser für Google JSON-Daten.
  • RouteOverlay.java: Zeichnet die Route auf einem Karte.

Implementierung:

  1. Ersetzen Sie Ihren Code zum Extrahieren von Wegbeschreibungen aus KML durch die folgende Funktion:
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;
}
  1. Fügen Sie in der onCreate()-Methode Folgendes hinzu 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();

Hinweis: Es wird empfohlen, die Directions()-Funktion innerhalb einer AsyncTask zu verwenden, um Netzwerkoperationen im UI-Thread zu vermeiden.

Das obige ist der detaillierte Inhalt vonWie migriere ich von KML zu JSON, um Google Directions-Daten abzurufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn