Google会映射实时路线并显示路线历史

时间:2016-03-15 12:48:51

标签: android google-maps google-maps-api-2

1)我找到了一种方法,可以在地图上用折线显示用户的实时位置更新。我已经这样做但不准确。下面是GIF,显示了我想要实现的目标。

示例:

enter image description here

2)一旦用户完成了它,我需要保存路线并通过在折线上绘制地图再次显示它。

以下是我的所作所为。

点击按钮i,使用MIN_TIME_BW_UPDATES = 10sec0 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是一种为地图添加折线的方法。

请帮助优化我的逻辑

1 个答案:

答案 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/