我的 Android 应用程序中有一张地图,显示了许多标记(~20-50)。但当我尝试滚动/缩放时,该应用程序的性能非常差(在 Google Android 地图中,我对披萨进行了示例搜索,还发现了一些 20-50 个结果,并且在缩放/滚动时我没有注意到任何特定的性能问题)地图)。
这是我的(伪)代码:
onCreate() {
....
drawable = this.getResources().getDrawable(R.drawable.marker1);
itemizedOverlay = new MyItemizedOverlay(drawable,mapView);
...
callWebServiceToRetrieveData();
createMarkers();
}
createMarkers(){
for(elem:bigList){
GeoPoint geoPoint = new GeoPoint((int)(elem.getLat()*1000000), (int) (elem.getLon()*1000000));
OverlayItem overlayItem = new OverlayItem(geoPoint, elem.getName(), elem.getData());
itemizedOverlay.addOverlay(overlayItem);
mapOverlays.add(itemizedOverlay);
}
mapView.invalidate();
}
MyItemizedOverlay.addOverlay 看起来像这样:
public void addOverlay(OverlayItem overlay) {
m_overlays.add(overlay);
populate();
}
如果我理解这是如何正确工作的,那么您不应该在每次添加覆盖后调用 populate。添加完所有内容后就应该执行此操作。我认为发生的事情是你添加第一个OverlayItem
并打电话populate()
所以它将其添加到ItemizedOverlay.
然后你添加第二个OverlayItem
到列表并致电populate()
它添加了那些two覆盖到ItemizedOverlay
导致three覆盖层中的项目。所以我认为你得到的比你想象的 20-50 多得多。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)