我想在Android设备上使用GPS绘制我的曲目。
显示已完成的路线没有问题,但我发现在移动时很难显示音轨。
到目前为止,我已经找到了两种不同的方法,但都不是特别令人满意。
PolylineOptions track = new PolylineOptions();
Polyline poly;
while (moving) {
Latlng coord = new LatLng(lat,lng); // from LocationListener
track.add(coord);
if (poly != null) {
poly.remove();
}
poly = map.addPolyline(track);
}
即在添加新坐标之前建立折线,然后将其添加回去。
这非常慢。
oldcoord = new LatLng(lat,lng);;
while (moving) {
PolylineOptions track = new PolylineOptions();
LatLng coord = new (LatLng(lat,lng);
track.add(oldcoord);
track.add(coord);
map.addPolyline(track);
oldcoord = coord;
}
即绘制一系列单折线。
虽然这比方法1快得多,但它看起来很锯齿,特别是在较低的缩放级别,因为每个折线都是方形的,它只是实际接触的角落。
有没有更好的方法呢?如果是的话,它是什么?
答案 0 :(得分:8)
使用2.0 Maps API有一个简单的解决方案。您将使用三个步骤获得良好的平滑路线:
创建一个LatLng点列表,例如:
List<LatLng> routePoints;
将路线点添加到列表中(可以/应该在循环中完成):
routePoints.add(mapPoint);
创建折线并将其作为LatLng点列表提供:
Polyline route = map.addPolyline(new PolylineOptions()
.width(_strokeWidth)
.color(_pathColor)
.geodesic(true)
.zIndex(z));
route.setPoints(routePoints);
试一试!