Ale*_*der 7 java performance android google-maps android-maps-v2
我已在Android应用程序中将Google Maps v1升级到v2.
而v2很不错,但是一种方法似乎是我生命中最慢的方法.
Projection proj = map.getProjection();
Point point = proj.toScreenLocation(example.m_geopoint);
Run Code Online (Sandbox Code Playgroud)
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, 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
...
Run Code Online (Sandbox Code Playgroud)
调用该方法时,此消息始终显示.
v2和v1之间的区别是:
pointOut = proj.toScreenLocation(geopointIn); // v2
projection.toPixels(geopointIn, pointOut); // v1
Run Code Online (Sandbox Code Playgroud)
而v1似乎是更优化的解决方案.有没有办法让它更快?这是性能错误吗?
这个答案可能来得太晚了,但如果其他人遇到同样的问题,像我一样,解决方案可能是使用 Java 的 Graphics2D 在自己的服务器上预渲染图像(其工作原理与在画布上绘制几乎相同)并且在应用程序中下载它。您必须将地理点转换为笛卡尔坐标。在应用程序中,您只需使用 LatLngBounds 将图像定位为 GroundOverlay: 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 方法一样快。
| 归档时间: |
|
| 查看次数: |
933 次 |
| 最近记录: |