首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android地图缓存线绘制

Android地图缓存线绘制
EN

Stack Overflow用户
提问于 2011-11-10 15:17:43
回答 1查看 478关注 0票数 2

我正在开发一个应用程序,在Google插件上跟踪公路线路。

有很多点画,这无意中使地图非常缓慢的导航。iOS地图似乎解决了这个问题,因为可以绘制大量的点,而不会使地图变得迟缓。

我开始采样点取决于缩放级别。例如,缩放级别7只使用每20点绘制线来跟踪路由。但即便如此,这仍然是太多的点,并结束了一个非常缓慢的摇摄和缩放的经验。

两个问题:

第一:是否有可能检测到手机上显示的地图的当前区域,而不再在屏幕外绘制点?

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

第二:是否有可能缓存正在绘制的路径(我猜想,由于点的投影,每个缩放级别都必须这样做)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-10 16:12:20

是否有可能检测到手机中显示的地图当前区域,而不再在屏幕外绘制点?

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

代码语言:javascript
复制
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;

在呈现时,您应该只选择位于这些边界内的点。

另见:

  • 延迟加载的MapView
  • 添加覆盖项的适当方法

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

就我个人而言,我使用r外简化算法来减少直线路径上的点数。例如,如果20个点位于同一条线上,则使用起点和终点并画一条直线是有意义的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8081801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档