我想在 Android 设备上使用 GPS 绘制我的轨迹。
我可以毫无问题地显示完整的路线,但发现在移动时很难显示轨迹。
到目前为止,我已经找到了两种不同的方法来做到这一点,但都不是特别令人满意。
METHOD 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);
}
即建立折线,在添加新坐标之前将其删除,然后将其添加回来。
这速度慢得可怕。
METHOD 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 快得多,但它看起来相当锯齿状,特别是在较低的缩放级别下,因为每条折线都是方形的,并且只有角实际接触。
有没有更好的方法,如果有的话,它是什么?
有一个使用 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);
试一试!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)