gpt4 book ai didi

java - 在 Android 谷歌地图中绘制 4K 多段线

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:20:14 24 4
gpt4 key购买 nike

我现在正在为 Android 设备开发一个应用程序。主要功能是在 map 上绘制折线以显示每条街道上城市的交通情况。不幸的是,当我围绕 3K 多段线绘制时 - 数量根据屏幕尺寸和缩放级别而减少 - 我的 map 变得非常慢......我没有提到绘制所有线条的时间。

也许您知道在 map 上标记街道或画线的更有效方法?

我也考虑过改用 OSM,但我从未使用过它,也不知道它的效率如何。

我在 Samsung Galaxy Note 10.1 上调试应用程序并且应用程序使用 Map API v2

我绘制折线的代码:

Polyline line;
List<Float> coordinatesStart;
List<Float> coordinatesEnd;
LatLng start;
LatLng end;
List<List<Float>> coordinates;
int polylinesNumber = 0;
for(Features ftr : features){
coordinates = ftr.geometry.coordinates;

for(int i = 0; i<coordinates.size()-1; i++){

coordinatesStart = coordinates.get(i);
coordinatesEnd = coordinates.get(i+1);
start = new LatLng(coordinatesStart.get(1), coordinatesStart.get(0));
end = new LatLng(coordinatesEnd.get(1), coordinatesEnd.get(0));
line = map.addPolyline(new PolylineOptions()
.add(start, end)
.width(3)
.color(0x7F0000FF)); //semi-transparent blue
polylinesNumber++;

}
}

如有任何帮助,我将不胜感激!

最佳答案

这里有很好的优化:

您的主要错误是您使用 new PolyLineOptions 您在 map 上绘制的每条线的实例。这就是绘图非常慢。

解决方案是:

仅使用折线选项的一个实例,并且仅在循环内使用 .add(LatLng) 函数。

    //MAGIC #1 here
//You make only ONE instance of polylineOptions.
//Setting width and color, points for the segments added later inside the loops.
PolylineOptions myPolylineOptionsInstance = new PolylineOptions()
.width(3)
.color(0x7F0000FF);

for (Features ftr : features) {
coordinates = ftr.geometry.coordinates;

for (int i = 0; i < coordinates.size(); i++) {

coordinatesStart = coordinates.get(i);
start = new LatLng(coordinatesStart.get(1), coordinatesStart.get(0));

//MAGIC #2 here
//Adding the actual point to the polyline instance.
myPolylineOptionsInstance.add(start);

polylinesNumber++;
}
}

//MAGIC #3 here
//Drawing, simply only once.
line = map.addPolyline(myPolylineOptionsInstance);

注意:

如果您想为不同的线段/部分使用不同的颜色,您将不得不使用多个折线选项,因为折线选项只能有一种颜色。但方法是一样的:尽可能少地使用 polylineOptions。

关于java - 在 Android 谷歌地图中绘制 4K 多段线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16737517/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com