Rumah >Java >javaTutorial >Bagaimana untuk Berhijrah daripada KML ke JSON untuk Mendapatkan Data Arah Google?

Bagaimana untuk Berhijrah daripada KML ke JSON untuk Mendapatkan Data Arah Google?

Barbara Streisand
Barbara Streisandasal
2024-11-25 11:36:45993semak imbas

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

Masalah Mendapatkan Arah Google Menggunakan Data KML

Google telah menghentikan pengambilan Google Directions menggunakan data KML sejak 27 Julai 2012. Ini bermakna kod digunakan untuk mengekstrak arah daripada Google dengan menghuraikan fail KML tidak lagi berfungsi.

Penyelesaian:

Pindahkan kod anda untuk menggunakan JSON dan bukannya KML. Untuk memudahkan peralihan ini, saya mencipta kelas berikut:

  • Parser.java: Mentakrifkan antara muka untuk menghuraikan data Google Directions.
  • XMLParser. java: Melaksanakan kelas abstrak untuk menghuraikan data XML daripada yang disediakan URL.
  • Segment.java: Mewakili segmen laluan, termasuk titik, arahan belok, panjang dan jarak.
  • Route.java: Mewakili laluan, termasuk titik, arahan belok, panjang, garis poli dan lain-lain metadata.
  • GoogleParser.java: Melaksanakan penghurai konkrit untuk data Google JSON.
  • RouteOverlay.java: Melukis laluan pada peta.

Pelaksanaan:

  1. Ganti kod anda untuk mengekstrak arah daripada KML dengan fungsi berikut:
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. Dalam kaedah onCreate(), tambahkan yang berikut kod:
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();

Nota: Adalah disyorkan untuk menggunakan fungsi directions() dalam AsyncTask untuk mengelakkan operasi rangkaian pada urutan UI.

Atas ialah kandungan terperinci Bagaimana untuk Berhijrah daripada KML ke JSON untuk Mendapatkan Data Arah Google?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn