Android Map Performance poor because of many Overlays?

后端 未结 3 2071
臣服心动
臣服心动 2021-02-10 03:33

I have a map in my android application that shows many markers (~20-50). But the app performs very poor when i try to scroll/zoom (in Google Android Maps i did a sample search f

相关标签:
3条回答
  • 2021-02-10 03:51

    If I understand how this works correctly, you should not be calling populate after every add an overlay. You should do it once you've added them all. I think what's happening is that you add the first OverlayItem and call populate() so it adds that to the ItemizedOverlay. Then you add a second OverlayItem to the list and call populate() and it adds those two overlays to the ItemizedOverlay resulting in three items in the overlay. So I think you're getting way more than the 20-50 that you think.

    0 讨论(0)
  • 2021-02-10 03:52

    I ran into the same problem last night, and my solution was the same as yours. I felt weird about how I called the populate method.

    I had the same code as you but I called

    speedyPopulate() { 
      populate(); 
    }
    

    in the MyOverlay class

    0 讨论(0)
  • 2021-02-10 04:00

    I've done the following now and it works fast(er):

    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);
    
       }
       itemizedOverlay.populateNow();
       mapOverlays.add(itemizedOverlay); //outside of for loop
    

    }

    and in MyOverlay:

    public void addOverlay(OverlayItem overlay) {
        m_overlays.add(overlay);
    }
    
    public void populateNow(){
        populate();
    }
    

    is this better/correct now ? or any other improvements possible?

    0 讨论(0)
提交回复
热议问题