【问题标题】:How do I dynamically add location points to a Polyline in Android GoogleMap?如何在 Android GoogleMap 中将位置点动态添加到折线?
【发布时间】:2014-12-02 03:56:18
【问题描述】:

我监控当前位置并注册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(截至此日期)。

【问题讨论】:

    标签: android google-maps


    【解决方案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);
        }
    }
    

    有没有更好的办法?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-12
      • 1970-01-01
      • 2013-04-25
      • 2011-03-21
      • 1970-01-01
      • 2019-04-26
      • 2020-03-30
      相关资源
      最近更新 更多