我目前正在开发一款Android谷歌地图应用程序帮助获取地图上2点之间的方向。我能够从谷歌地图服务(Direction API)获得响应,并根据步骤列表绘制折线(谷歌地图Android SDK),但该线路不会与道路对齐(曲线贴在地图上的道路上) ),它只是直线。
如何在Android应用中绘制折线对齐?我使用的是Android Studio。
这是我绘制折线的代码。
void updateMapDirection() {
Polyline newPolyline;
PolylineOptions options = new PolylineOptions().width(3).color(Color.BLUE).geodesic(true);
LatLng latLng = new LatLng(mLegs.get(0).getmStartLocation().getmLatitude(),
mLegs.get(0).getmStartLocation().getmLongitude());
options.add(latLng);
for (WNStep i : mLegs.get(0).getmSteps()) {
latLng = new LatLng(i.getmEndLocation().getmLatitude(), i.getmEndLocation().getmLongitude());
options.add(latLng);
}
newPolyline = map.addPolyline(options);
}
感谢您的帮助。
答案 0 :(得分:0)
这是你可以做到的:
将JSON对象作为"结果"。解析它,也以List的形式解码折线。
final JSONObject json = new JSONObject(result);
JSONArray routeArray = json.getJSONArray("routes");
JSONObject routes = routeArray.getJSONObject(0);
JSONObject overviewPolylines = routes
.getJSONObject("overview_polyline");
String encodedString = overviewPolylines.getString("points");
List<LatLng> list = decodePoly(encodedString);
最后通过在列表上循环并设置折线的属性来添加折线选项,折线的属性对应于您要在Google地图上从Direction API检索到的道路。
PolylineOptions options = new PolylineOptions().width(5).color(Color.BLUE).geodesic(true);
for (int z = 0; z < list.size(); z++) {
LatLng point = list.get(z);
options.add(point);
}
line = myMap.addPolyline(options);