首页  >  文章  >  Java  >  如何从 KML 迁移到 JSON 以检索 Google 路线数据?

如何从 KML 迁移到 JSON 以检索 Google 路线数据?

Barbara Streisand
Barbara Streisand原创
2024-11-25 11:36:45912浏览

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

使用 KML 数据检索 Google 路线时出现问题

自 2012 年 7 月 27 日起,Google 已停止使用 KML 数据检索 Google 路线。这意味着代码不再用于通过解析 KML 文件从 Google 提取路线功能性。

解决方案:

迁移代码以使用 JSON 而不是 KML。为了促进这种转变,我创建了以下类:

  • Parser.java:定义用于解析 Google Directions 数据的接口。
  • XMLParser。 java: 实现一个抽象类,用于解析提供的 XML 数据URL。
  • Segment.java:表示路线的一段,包括点、转弯指示、长度和距离。
  • Route.java: 表示一条路线,包括点、转弯指示、长度、折线等元数据。
  • GoogleParser.java: 为 Google JSON 数据实现具体解析器。
  • RouteOverlay.java: 在map.

实现:

  1. 将用于从 KML 提取路线的代码替换为以下函数:
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. 在onCreate()方法中添加以下内容代码:
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();

注意:建议在 AsyncTask 中使用 Directions() 函数,以避免 UI 线程上的网络操作。

以上是如何从 KML 迁移到 JSON 以检索 Google 路线数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn