我有一个带坐标的json文件,并将它们放在LatLng数组中。某些坐标丢失,因为设备仅在打开时发送坐标。因此,当您关闭设备并将其放置在其他位置时,折线会通过整个地图到另一个点并连接它。如果两点之间的距离太大,我需要以某种方式分割折线。为每个连接点绘制多条折线不是一种选择,因为可以有500000个点。
无法在此处发布图片,因为我没有声誉。
http://i.imgur.com/YtslNwX.png
这就是我将坐标放在折线选项中的方法。
mapData.routeOptions此处等于折线选项。
List<LatLng> route = new ArrayList<LatLng>();
route.addAll(positions);
double totalDistance=0;
if (route.size() > 1) {
mapData.color = suppliedMapData.color;
int color = mapData.color;
int colorAlpha = Utils.adjustAlpha(color, ROUTE_TRANSPERENCY_PERCENTAGE);
LatLngBounds.Builder boundsBuilder = LatLngBounds.builder();
for (LatLng position : route) {
boundsBuilder.include(position);
}
mapData.routeBounds = boundsBuilder.build();
mapData.routeOptions = new PolylineOptions().addAll(route).color(colorAlpha);
这就是我绘制折线的方法。
int size = sArray.size();
for (int i = 0; i < size; i++) {
MapData mapData = sArray.valueAt(i);
if (mapData.routeOptions != null) {
mapData.routeOptions.width(7);
mPolylines.add(mMap.addPolyline(mapData.routeOptions));
hasPosData = true;
}}
将折线添加到mPolylines数组中。因为设备多于一个,所有设备都需要绘制。