我試圖在Android上的Google地圖上相隔一定距離(比如超過100英里)的兩個位置之間繪製平滑多段線。我一直在關注這個guide以及guide這個關於利用Directions and Snap to Roads API的方面,但是由於從Snap到Roads API的100個座標的限制,看起來幾乎不可能從一個位置到另一個位置,遵循道路平滑的輪廓。之間的多段線未捕捉到道路
我已經成功地提取該方向的所有座標使用返回overview_points繪製折線,並使用解碼方法從PolyUtil API已經破譯這一點,但在地圖上繪製的折線沒有捕捉到的道路絕大多數時間。相反,我嘗試使用Snap to Roads API,並設置了100個座標的限制(允許的最大GPS點數),這些座標似乎都非常準確地對準從目的地A到B的道路(僅覆蓋兩個位置之間的一定距離如果相距甚遠)。
基本上是有什麼我完全丟失,或者是它的到來了一些決議,傳播100使用從路線從overview_points檢索到的GPS點座標對齊的分配道路API的情況下, API,即每隔XXX米繪製一個座標。
下面是我通過一個凌空請求減去捕捉到道路的要求執行的代碼,後來是實現起來相當直接的批量:
StringRequest stringRequest = new StringRequest(Request.Method.GET,
"https://maps.googleapis.com/maps/api/directions/json?
origin=START_LOCATION_HERE&destination=END_LOCATION_HERE&key=API_KEY_HERE",
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
JSONObject directions;
try {
directions = new JSONObject(response);
JSONArray routes = directions.getJSONArray("routes");
mCoordinates = new ArrayList<>();
for (int i = 0; i < routes.length(); i++) {
JSONObject routesObject = routes.getJSONObject(i);
JSONObject overviewPolyline = routesObject.getJSONObject("overview_polyline");
String points = overviewPolyline.getString("points");
List<LatLng> coordinates = new ArrayList<>();
coordinates.addAll(PolyUtil.decode(points));
PolylineOptions routeCoordinates = new PolylineOptions();
for (LatLng latLng : coordinates) {
routeCoordinates.add(new LatLng(latLng.latitude, latLng.longitude));
}
routeCoordinates.width(5);
routeCoordinates.color(Color.BLUE);
Polyline route = mGoogleMap.addPolyline(routeCoordinates);
for (LatLng latLng : coordinates) {
mGoogleMap.addMarker(new MarkerOptions().position(new LatLng(latLng.latitude, latLng.longitude)));
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// TODO handle error
}
});
你爲什麼要這麼做? '字符串formattedResponse = points.replaceAll(「'\\'」,「''');' –
嗨丹尼爾,根據此鏈接https://developers.google.com/maps/documentation/utilities/polylinealgorithm:'請注意,反斜槓被解釋爲字符串文字中的轉義字符。此實用程序的任何輸出都應該將反斜槓字符轉換爲字符串內的雙反斜槓。我嘗試了幾種組合,這是讓它起作用的唯一方法之一,除非我完全誤解了這一點。 –
對不起,我的錯誤,我現在已經刪除了這條線,它似乎沒有它的工作。但是,這個問題仍然存在於不符合道路輪廓的座標上。 –