加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 谷歌地图v2 Projection.toScreenLocation(…)非常慢

发布时间:2020-12-15 00:33:55 所属栏目:Java 来源:网络整理
导读:我已在 Android应用程序中将Google Maps v1升级到v2. 而v2很不错,但是一种方法似乎是我生命中最慢的方法. Projection proj = map.getProjection();Point point = proj.toScreenLocation(example.m_geopoint); toScreenLocation(…)是如此之慢,因此应用程序减
我已在 Android应用程序中将Google Maps v1升级到v2.

而v2很不错,但是一种方法似乎是我生命中最慢的方法.

Projection proj = map.getProjection();
Point point = proj.toScreenLocation(example.m_geopoint);

toScreenLocation(…)是如此之慢,因此应用程序减慢到无法使用的慢动作.
该方法每帧更新可能100次,但在Google Maps v1上的效果非常好.

当我在Android Console中检查时,我看到了这个:

10-06 13:53:04.460: D/dalvikvm(4889): GC_EXPLICIT freed 251K,14% free 14622K/16839K,paused 3ms+5ms
10-06 13:53:05.859: D/dalvikvm(4889): GC_EXPLICIT freed 252K,paused 2ms+5ms
10-06 13:53:07.222: D/dalvikvm(4889): GC_EXPLICIT freed 251K,paused 3ms+6ms
...

调用该方法时,此消息始终显示.

v2和v1之间的区别是:

pointOut = proj.toScreenLocation(geopointIn); // v2
projection.toPixels(geopointIn,pointOut); // v1

而v1似乎是更优化的解决方案.有没有办法让它更快?这是性能错误吗?

解决方法

这个答案可能为时已晚,但如果有其他人遇到同样的问题,像我一样,解决方案可能是使用Java的Graphics2D在自己的服务器上预渲染图像(其工作方式几乎与绘制画布相同)和在应用程序中下载它.您必须将地理点转换为笛卡尔坐标.
在应用程序中,您只需将图像定位为具有LatLngBounds: https://developers.google.com/maps/documentation/android/groundoverlay#use_latlngbounds_to_position_an_image的GroundOverlay

并将其添加到地图…
https://developers.google.com/maps/documentation/android/groundoverlay#change_an_overlay

对我来说,这种方法非常快.至少与Google Maps V1方法一样快.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读