Android Maps V2:缩小时多边形填充消失
Posted
技术标签:
【中文标题】Android Maps V2:缩小时多边形填充消失【英文标题】:Android Maps V2: Polygon fill disappears when zooming out 【发布时间】: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 调试器。我可以确认。在该调试模式下运行时,应用程序非常慢,但我所有的圆圈填充都完美绘制,并且在缩放/平移时永远不会消失。发生了什么事? 您解决了这个问题吗?我现在正在处理它。 也许这些链接可以为您提供答案? blog.wittchen.biz.pl/…developer.android.com/guide/topics/graphics/hardware-accel.html 【参考方案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
。这可能无法在地图视图上按预期工作,您可能必须将其发布到不同的队列中,或者进行一些延迟发布。我对地图框架不够熟悉,无法确定这会解决它,但听起来这里肯定存在线程问题。
【讨论】:
以上是关于Android Maps V2:缩小时多边形填充消失的主要内容,如果未能解决你的问题,请参考以下文章
如何启用 google maps android api 以实现平滑的两指缩放?
Android Google Maps:禁用 MapFragment 中的拖动
Android Google Maps:使用折线在多边形中切孔