Android Maps V2:缩小时,多边形填充消失

时间:2013-11-19 09:50:12

标签: android google-maps polygon

我试图在我的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上。令人惊讶的是,它适用于较慢,较旧的设备!由于附加调试器会使应用程序变得非常慢,这里可能存在某种连接?

非常感谢, 马可

1 个答案:

答案 0 :(得分:0)

如果您在两次更新中所说的内容属实,那么这就是线程。在某个地方你遇到了线程问题。只提供您提供的代码片段,没有什么看起来不合适,但需要检查其余代码才能解决这个问题。最可能发生的是绘制这些多边形的调用是在视图准备好之前开始的。在没有看到任何内容的情况下,我建议采用这些方法来解决问题:

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。这可能无法在地图视图上按预期工作,您可能必须将其发布到不同的队列,或执行一些延迟发布。我对地图框架不够熟悉,无法确定这会解决它,但这听起来确实存在线程问题。