【问题标题】:Android Maps V2: Polygon fill disappears when zooming outAndroid Maps V2:缩小时多边形填充消失
【发布时间】:2013-12-02 19:21:56
【问题描述】:

我试图在我的 MapView 上显示多个多边形,其中一些重叠并具有不同的颜色。当我添加它们时,一切看起来都很好,但是当我缩小时,许多(不是全部)多边形停止被填充。来回缩放和滚动有时会再次填充其中一些,但这似乎是随机行为。

添加多边形的代码:

clearAreas();
for (Area area: areas) {
    for (List<LatLng> subArea: area.getSubAreas()) {
        mAreaPolygons.add(getMap().addPolygon(
             new PolygonOptions()
                .strokeWidth(2.0f)
                .zIndex(++zIndex)
                .strokeColor(area.getColor())
                .fillColor(area.getTransparentColor())
                .addAll(subArea)));
    }
}

我了解(根据文档)如果未正确指定多边形的几何形状,则不会填充多边形。我尝试以顺时针和逆时针的顺序添加点,它没有任何区别。

谁能解释这种行为?

更新:如果附加了调试器,一切正常!多边形全部填充并在缩小时保持填充。一旦我分离调试器,多边形就会再次开始失去填充。这是怎么回事?

更新 #2:问题出现在我的 Galaxy S3 上。令人惊讶的是,它可以在较慢、较旧的设备上运行!由于附加调试器会使应用程序变得很慢,也许这里有某种连接?

非常感谢, 马可

【问题讨论】:

  • 我在圆形填充中看到了同样的情况。附加调试器是什么意思? logcat 以外的调试器?
  • 没关系,例如,您的意思是 Eclipse 调试器。我可以确认。在该调试模式下运行时,应用程序非常慢,但我所有的圆圈填充都完美绘制,并且在缩放/平移时永远不会消失。发生了什么事?
  • 您解决了这个问题吗?我现在正在处理它。

标签: android google-maps polygon


【解决方案1】:

如果您在两次更新中所说的都是真的,那么这就是线程的味道。你在某个地方遇到了线程问题。仅使用您提供的代码的 sn-p,看起来没有什么不合适的,但需要检查您的其余代码才能弄清楚这一点。最有可能发生的是,绘制这些多边形的调用是在视图准备好绘制之前开始的。在没有看到任何东西的情况下,我会提出一些类似的建议来解决问题:

mMap.setOnCameraChangeListener(new OnCameraChangeListener() {

@Override
public void onCameraChange(CameraPosition pos) {
    if (pos.zoom != currentZoom) {
            mMap.post(new Runnable() {
                public void run() {
                    // TODO: call the method that wraps the code you provided
                });
    }
});

这将在视图完成渲染后调用您在此处提供的Runnable。这可能无法在地图视图上按预期工作,您可能必须将其发布到不同的队列中,或者进行一些延迟发布。我对地图框架不够熟悉,无法确定这会解决它,但听起来这里肯定存在线程问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    • 2012-08-23
    相关资源
    最近更新 更多