1)我找到了一种方法,可以在地图上用折线显示用户的实时位置更新。我已经这样做但不准确。下面是GIF,显示了我想要实现的目标。
示例:
2)一旦用户完成了它,我需要保存路线并通过在折线上绘制地图再次显示它。
以下是我的所作所为。
点击按钮i,使用MIN_TIME_BW_UPDATES = 10sec
和0 meters
@Override
public void onLocationChanged(Location location) {
LatLng current = new LatLng(location.getLatitude(), location.getLongitude());
if (flag == 0) //when the first update comes, we have no previous points,hence this
{
prev = current;
flag = 1;
}
CameraUpdate update = CameraUpdateFactory.newLatLngZoom(current, 18);
googleMap.animateCamera(update);
googleDirection = new GoogleDirection(new TaskCompleted() {
@Override
public void callBack(List<List<HashMap<String, String>>> routes) {
addPolyLineToMap(routes);
}
});
googleDirection.execute(prev, current, "mode=walking");
prev = current;
}
googleDirection
只是一个带有Lat,Long和模式的API调用。
addPolyLineToMap
是一种为地图添加折线的方法。
请帮助优化我的逻辑
答案 0 :(得分:0)
你说GoogleDirection只是一个API而addPolyLineToMap就是方法。所以我理解在onLocationChanged方法中插入代码是不恰当的,该方法在用户位置发生变化时触发。您可以将这些函数划分为按方法优化代码,
public void onLocationChanged(Location location){
current = location;
//Update Map or UpdateUI
updateCamera();
updatePolyline();
}
private void updateCamera(){ // }
private void updatePolyline(){ // }
您可以在此链接中找到完整的源代码,虽然它是Pubnub源代码,但它会有所帮助。 链接:https://www.pubnub.com/blog/2015-05-12-broadcasting-realtime-location-data-for-android-live-updating-map/