7

我想在 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 渲染速度快得多,但它看起来非常参差不齐,尤其是在较低的缩放级别下,因为每条折线都是方形的,并且只有角实际接触。

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

4

1 回答 1

9

使用 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);
    

试试看!

于 2013-04-13T03:18:10.233 回答