如何在Android GoogleMap中动态地将位置点添加到折线?

时间:2014-11-21 19:05:43

标签: android google-maps

我监控当前位置并注册GoogleMap.MyLocationChangeListener。我想绘制一条代表我自己路线的折线(地图上的轨迹)。在每次更新位置时,我都想为路线添加新点,以便更新地图上的曲目。

这是我的代码不起作用:

private GoogleMap mMap;
private boolean drawTrack = true;
private Polyline route = null;
private PolylineOptions routeOpts = null;

private void startTracking() {
    if (mMap != null) {
        routeOpts = new PolylineOptions()
                .color(Color.BLUE)
                .width(2 /* TODO: respect density! */)
                .geodesic(true);
        route = mMap.addPolyline(routeOpts);
        route.setVisible(drawTrack);

        mMap.setOnMyLocationChangeListener(this);
    }
}

private void stopTracking() {
    if (mMap != null)
        mMap.setOnMyLocationChangeListener(null);

    if (route != null)
        route.remove();
        route = null;
    }
    routeOpts = null;
}

public void onMyLocationChange(Location location) {
    if (routeOpts != null) {
        LatLng myLatLng = new LatLng(location.getLatitude(), location.getLongitude());
        routeOpts.add(myLatLng);
    }
}

如何将点添加到折线,以便更改将反映在UI中?现在,折线不会被渲染。

我正在使用最新的play-services:6.1.71(截至此日期)。

1 个答案:

答案 0 :(得分:1)

这似乎对我有用:

public void onMyLocationChange(Location location) {
    if (routeOpts != null) {
        LatLng myLatLng = new LatLng(location.getLatitude(), location.getLongitude());
        List<LatLng> points = route.getPoints();
        points.add(myLatLng);
        route.setPoints(points);
    }
}

有更好的方法吗?