Google Maps v2 Projection.toScreenLocation(...)极其缓慢

问题描述:

我在Android应用程序中将Google Maps v1升级到v2。Google Maps v2 Projection.toScreenLocation(...)极其缓慢

而v2很好,等等,但一种方法似乎是我生命中最慢的事情。

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

toScreenLocation(...)速度太慢,所以应用程序变慢,导致无法使用慢动作。 该方法每帧可能更新100次,但在Google Maps v1上效果非常好。

当我在Android的控制台检查我看到这一点:

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, 14% free 14622K/16839K, paused 2ms+5ms 
10-06 13:53:07.222: D/dalvikvm(4889): GC_EXPLICIT freed 251K, 14% free 14622K/16839K, paused 3ms+6ms 
... 

这个消息出来所有的时间,而该方法被调用。

和V2和V1之间的区别是:

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

而且V1似乎更优化的解决方案。有什么方法可以让它更快?这是一个性能错误?

+0

这是很长一段时间以前,但我目前遇到一些性能问题非常类似于这里描述的。你有没有在某个时候找到解决方案? – saberrider 2017-01-18 13:06:32

这个答案可能来得太晚了,但是如果有其他人遇到同样的问题,像我一样,解决方案可能是使用Java的Graphics2D在自己的服务器上预先渲染图像(其工作原理与绘图画布)并在应用程序内下载它。您必须将地理点转换为笛卡尔坐标。 内的应用程序,你只需要在图像的GroundOverlay用的LatLngBounds的位置:https://developers.google.com/maps/documentation/android/groundoverlay#use_latlngbounds_to_position_an_image

,并把它添加到地图... https://developers.google.com/maps/documentation/android/groundoverlay#change_an_overlay

对于我来说,这种方法的工作原理相当快。至少与Google Maps V1方法一样快。