Mar*_*ina 8 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)));
}
}
Run Code Online (Sandbox Code Playgroud)
据我所知(根据文档),如果没有正确指定几何体,则不会填充多边形.我尝试按顺时针和逆时针顺序添加点,这没有什么区别.
谁能解释这种行为?
更新:如果连接调试器,一切都很完美!多边形都被填充并在缩小时保持填充状态.一旦我分离调试器,多边形就会再次失去填充.这里发生了什么?
更新#2:问题出现在我的Galaxy S3上.令人惊讶的是,它适用于较慢,较旧的设备!由于附加调试器会使应用程序变得非常慢,这里可能存在某种连接?
非常感谢,Marco
如果你在两次更新中所说的是真的的话,这会散发出线程的味道。在某个地方你遇到了线程问题。仅使用您提供的代码片段,看起来没有什么不合适的地方,但需要检查其余代码才能弄清楚这一点。最有可能发生的情况是,在视图准备好绘制之前,绘制这些多边形的调用就开始了。在没有看到任何内容的情况下,我建议按照以下方式进行修复:
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
});
}
});
Run Code Online (Sandbox Code Playgroud)
Runnable这将在视图完成渲染后调用您在此处提供的。这可能无法在地图视图上按预期工作,您可能必须将其发布到不同的队列中,或者进行一些延迟发布。我对地图框架不太熟悉,无法确定这会解决它,但听起来这里确实存在线程问题。
| 归档时间: |
|
| 查看次数: |
1527 次 |
| 最近记录: |