【问题标题】:MapView very slow with 1000 overlayitems on the map, even with only 2 visiblesMapView 非常慢,地图上有 1000 个覆盖项,即使只有 2 个可见项
【发布时间】:2012-08-02 12:13:11
【问题描述】:

我有一个在地图视图上显示 1000 个覆盖项的地图视图。即使地图上只有两个覆盖项可见,地图也移动得很慢(应用了巨大的缩放)

如果只有少量的覆盖项可见,是否可以优化地图视图以更快地移动?

谢谢

【问题讨论】:

    标签: android android-mapview itemizedoverlay overlayitem


    【解决方案1】:

    你可能掉进了平常的坑里。如果您制作了自己的 customoverlay,请确保您的 addOverlay 方法不会填充。填充应在添加所有叠加层后首先发生。如果每次添加时都进行填充,最终会得到许多叠加层。

    确保它为此过程使用 2 种方法,一种用于添加,另一种用于填充:

    public void addOverlay(CustomOverlayItem 覆盖) { mOverlays.add(覆盖); }

    公共无效填充覆盖(){ 填充(); }

    如果这不是问题,那么您应该考虑在引脚超出屏幕范围时动态移除引脚或将引脚分组在一起。我相信有一些开源项目已经为您完成了这方面的工作。

    【讨论】:

    • “当引脚超出屏幕范围时动态删除”这是我需要的,但我在谷歌中找不到代码,¿你有代码示例的链接吗?跨度>
    【解决方案2】:

    找到一个链接http://onthefencedevelopment.com/blog/using-google-maps-your-android-applications-%E2%80%93-part-3-adding-place-markers 仅绘制屏幕上的叠加层。尚未对其进行测试,但看起来很有希望。

    编辑:它有效

    【讨论】:

    • 请检查损坏的链接
    【解决方案3】:

    子类 MapView,覆盖 dispatchDraw()。检测地图中心或缩放级别的变化:

    @Override
    public void dispatchDraw(Canvas canvas)
    {
        super.dispatchDraw(canvas);
    
        GeoPoint gpCenterPoint = getMapCenter();
        int nZoomLevel = getZoomLevel();
    
        // either diff't zoom level or change to center point?
        if ( (gpCenterPoint.getLatitudeE6() != mCenterPoint.getLatitudeE6()) ||
             (gpCenterPoint.getLongitudeE6() != mCenterPoint.getLongitudeE6()) ||
             (nZoomLevel != mZoomLevel) )
        {
            // update pins here
                      updatePINS();
    
            mZoomLevel = nZoomLevel;
                mCenterPoint = gpCenterPoint;
        }
    }
    
    void updatePINS()
    {
        int nLatitudeSpan = mapView.getLatitudeSpan();
        int nLongitudeSpan = mapView.getLatitudeSpan();
    
         // TODO insert/remove PINS as needed
    }
    

    【讨论】:

    • 当你说“// TODO 根据需要插入/删除 PINS”时我应该怎么做我不知道该怎么做,我从来没有子类化 mapview。你能给我一个代码示例吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    • 2018-09-23
    • 2021-06-13
    • 1970-01-01
    • 2015-04-18
    • 1970-01-01
    相关资源
    最近更新 更多