1
現在我正在研究移動應用程序,它以特定間隔獲取gps位置,將位置數據發送到服務器。服務器根據此信息繪製Google路線圖。繪製谷歌路線圖:修復路線中的錯誤
請幫我解決以下情形
有時GPS座標標示實際行駛的相反的路線上,使路線完全錯誤。
例如我走在route like this (On google map)
的點B被取出/標記的平行道路上
我怎麼解決這個問題?
現在我正在研究移動應用程序,它以特定間隔獲取gps位置,將位置數據發送到服務器。服務器根據此信息繪製Google路線圖。繪製谷歌路線圖:修復路線中的錯誤
請幫我解決以下情形
有時GPS座標標示實際行駛的相反的路線上,使路線完全錯誤。
例如我走在route like this (On google map)
的點B被取出/標記的平行道路上
我怎麼解決這個問題?
嘗試亞歷山大圖書館的路線卓爾
編譯 'com.github.jd - 亞歷山大:庫:1.1.0'
例如:
private void startRouting() {
LatLng origin = new LatLng(18.01455, -77.499333);
LatLng destination = new LatLng(18.0145600, -77.491333);
Routing routing = new Routing.Builder()
.travelMode(Routing.TravelMode.DRIVING)
.alternativeRoutes(false)
.withListener(new RoutingListener() {
@Override
public void onRoutingFailure(RouteException e) {
Log.e("onRoutingFailure: ", e.getMessage());
}
@Override
public void onRoutingStart() {
}
@Override
public void onRoutingSuccess(ArrayList<Route> routes, int shortestRouteIndex) {
if (routes != null && routes.size() > 0) {
for (Route route : routes) {
List<LatLng> latlngs = route.getPoints();
try {
Random rnd = new Random();
int color = Color.argb(200, rnd.nextInt(256), rnd.nextInt(256), 0);
/* int color1 = Color.argb(225, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));
int color2 = Color.argb(225, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));
int color3 = Color.argb(225, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));*/
mMap.addPolyline(new PolylineOptions().addAll(latlngs).color(color).width(12.0f));
} catch (Exception e) {
e.printStackTrace();
Log.e("onRoutingSuccess: ", e.getMessage());
Toast.makeText(MainActivity.this, "An internal error occurred!", Toast.LENGTH_SHORT).show();
}
}
//showBottomSheet(routes.get(shortestRouteIndex));
}
}
@Override
public void onRoutingCancelled() {
Log.e("onRoutingCancelled: ", "Routing cancelled");
}
})
.waypoints(origin, destination)
.build();
routing.execute();
}
移動指向正確的道路?如果你有太多的數據需要手動完成,你需要創建一個算法來檢測不正確的點並修復它(這並不容易)。 – geocodezip
@geocodezip你知道任何類似的算法或刪除不正確的點的邏輯。 –
如果我這樣做,我會指出你。 – geocodezip