如何在Android设备上显示移动轨道

时间:2013-03-26 15:57:44

标签: google-maps-api-2 android-sdk-2.3 polyline

我想在Android设备上使用GPS绘制我的曲目。

显示已完成的路线没有问题,但我发现在移动时很难显示音轨。

到目前为止,我已经找到了两种不同的方法,但都不是特别令人满意。

方法1

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);
}

即在添加新坐标之前建立折线,然后将其添加回去。

这非常慢。

方法2

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快得多,但它看起来很锯齿,特别是在较低的缩放级别,因为每个折线都是方形的,它只是实际接触的角落。

有没有更好的方法呢?如果是的话,它是什么?

1 个答案:

答案 0 :(得分:8)

使用2.0 Maps API有一个简单的解决方案。您将使用三个步骤获得良好的平滑路线:

  1. 创建一个LatLng点列表,例如:

    List<LatLng> routePoints;
    
  2. 将路线点添加到列表中(可以/应该在循环中完成):

    routePoints.add(mapPoint);
    
  3. 创建折线并将其作为LatLng点列表提供:

    Polyline route = map.addPolyline(new PolylineOptions()
      .width(_strokeWidth)
      .color(_pathColor)
      .geodesic(true)
      .zIndex(z));
    route.setPoints(routePoints);
    
  4. 试一试!