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
Lepaskan: 2024-11-25 11:36:45
asal
966 orang telah melayarinya

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;
}
Salin selepas log masuk
  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();
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan