谷歌地图v2上的圆形覆盖物填充颜色并不总是被绘制出来。

9
我正在使用Google地图V2在Android的mapFragment中绘制几个圆。在使用V1时一切都很好,但是在切换后,我的圆的填充颜色并不总是被绘制出来。
例如,我打开地图,圆圈在那里并且已经填充了颜色,但是如果我缩放几次,填充颜色就会消失。我再次缩小地图,它仍然消失(或者它可能重新出现)。我无法确定是什么行为导致它消失,有时甚至一开始就没有出现,缩放周围会导致它出现。
这是我的一个圆的一些代码:
private void addAccuracyCircle() {
    accuracyCircle = map.addCircle(new CircleOptions()
            .center(LocationFinder.getActualPoint())
            .radius(LocationFinder.getActualLocation().getAccuracy())
            .fillColor(Color.argb(10, 0, 50, 240))
            .strokeColor(Color.argb(50, 0, 50, 240))
            .strokeWidth(2)
            .zIndex(1));
}

你有没有找到解决方法?我在4.3设备上也遇到了同样的问题。 - Jason Schindler
嗨,当我改变圆的半径时,我遇到了类似的问题。在重新绘制填充之前需要一段时间。也许您每次都使用不同的精度更新圆。不幸的是,我还没有解决方案。 - ferini
感谢 @Volti!如果您有任何新信息,请在此处或Google错误报告中更新。 - Flyview
@s.krueger 你用的是哪个安卓版本? - Flyview
@Flyview Android 4.3.1(CyanogenMod 10.2.0)。我暂时放弃了,把填充全部删除了:<即使在每次半径更改时清除并重新添加圆形也没有帮助。 - s.krueger
显示剩余7条评论
1个回答

1
你应该在地图视图上尝试执行map.invalidate()方法 - 这可能是因为在放大/缩小并在地图中导航时,mapview对象会重新渲染自己并且错过了绘制你的颜色填充。我遇到过类似的问题,解决方法是编写一个刷新方法,在地图上清除控件 ->invalidate -> 重新绘制地图上的控件 ->invalidate。可能有点混乱,但对我有效。
protected void RefreshMap() {
  map.getOverlays().clear();
  map.invalidate();

  // Use a list of itemize overlay here and add all the objects
  //from that list upon refresh

  map.invalidate();
}

我不确定我理解了。什么时候我应该调用invalidate?在平移/缩放地图之后吗?那将会有很多次的invalidates。关键是mapview不应该“错过”绘制颜色填充。 - Flyview

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接