gpt4 book ai didi

Android map 缓存画线

转载 作者:行者123 更新时间:2023-11-29 02:09:53 25 4
gpt4 key购买 nike

我正在开发一个在 Google Maps SDK 插件上追踪高速公路线路的应用程序。

画了很多点,不经意间让 map 导航很慢。 iOS map 似乎解决了这个问题,因为可以绘制大量点而 map 不会变得迟缓。

我开始根据缩放级别对点进行采样。例如。缩放级别 7 仅使用并绘制线条到每 20 个点来跟踪路线。但即便如此,点数仍然太多,最终导致平移和缩放体验非常缓慢。

两个问题:

一:是否可以检测到手机中正在显示的 map 的当前区域,并且不再在屏幕外绘制点?

编辑 - 经过一些初步调查后,很容易检测到裁剪区域而不是绘制点/线。 quickReject是我为此使用的功能。它对性能没有太大帮助,因为仍在遍历所有点以确定是否必须绘制它们 - 我相信它可以优化。

二:是否有可能缓存正在绘制的路径,也许是路径(由于点的投影,这必须在每个缩放级别完成,我假设?)

最佳答案

Is it possible to detect the current region of the map being displayed in the phone, and no longer paint points off-screen?

是的,你可以得到屏幕四个角的投影:

Projection proj = mapView.getProjection();
GeoPoint topLeft = proj.fromPixels(0, 0);

GeoPoint bottomRight = proj.fromPixels(mapView.getWidth()-1, mapView.getHeight()-1);

double topLat = topLeft.getLatitudeE6()/1E6;
double topLon = topLeft.getLongitudeE6()/1E6;
double bottomLat = bottomRight.getLatitudeE6()/1E6;
double bottomLon = bottomRight.getLongitudeE6()/1E6;

渲染时,您应该只选择位于这些边界内的点。

另见:

如果您处于非常高的缩放级别,请参阅:

我个人使用 r oute simplification algorithms减少直线路径上的点数。例如,如果 20 个点位于同一条直线上,则使用起点和终点绘制一条直线是有意义的。

关于Android map 缓存画线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8081801/

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