【发布时间】:2018-08-08 17:09:56
【问题描述】:
我在 Google 地图 Android 平台上的多边形中保持多边形填充颜色时遇到问题。当多边形路径与自身重叠时,填充颜色会消失。我使用相同的方法在 iOS 上突出显示我的路径,但它没有这种行为。请查看这些图像以注意当多边形路径中存在重叠时填充颜色如何消失。
这是重叠前正确的颜色填充:
当同一多边形内有多边形路径点时颜色消失:
iOS 上的行为不一样。多边形在 iOS 上保持填充。这是谷歌地图文档的摘录:
Fill color in ARGB format, the same format
used by Color. The default value is
transparent (0x00000000). If the polygon
geometry is not specified correctly (see
above for Outline and Holes), then no fill
will be drawn.
这是我正在使用的代码。基本上我有一条宽度为 X 的路径,宽度为 X 的路径被突出显示:
随着位置的变化,我取当前位置并计算左右点,例如:
LatLng leftPoint =
SphericalUtil.computeOffset(presentLoc,
widthInFeet * 0.3048, heading - 90);
接下来我取右侧并反转数组并将其添加到左侧以制作多边形路径。然后,我将该点数组传递到多边形中,以便随着位置的变化进行更新。
polygon.setPoints(polyPoints);
polygon.setFillColor(YELLOW);
polygon.setStrokeWidth(1);
当有不可避免的重叠时,例如急转弯等,如何使上面的图像保持其填充颜色?
我从下面使用了这个 com.google.maps.android.PolyUtil.simplify 来进行 Douglas-Peucker 简化,但是这对于重叠或通过路径返回的急转弯没有帮助。我很想使用多个较小的多边形而不是一个大的多边形,但我不想浪费系统资源,尤其是当应用程序具有相当大的路径时。
【问题讨论】:
-
听起来像一个错误;我想知道当多边形复杂时使用 com.google.maps.android.PolyUtil.simplify 是否是一种可能的解决方法,如果这适合您,理论上可以消除示例中的内部三角形。
-
if the polygon geometry is not specified correctly提示,这个多边形一开始就不应该有洞,或者至少要打掉这些顶点。
标签: android google-maps