我监控当前位置并注册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
(截至此日期)。
答案 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);
}
}
有更好的方法吗?