2013-03-25 160 views
1

我想用Google map(版本1.1.1,最后一个)在iPhone上绘制填充多边形。如何在Google Maps SDK中为iOS绘制填充多边形

任何人都知道该怎么做像iOS上:

(我对Android的代码)

mMap.addPolygon(new PolygonOptions() 
      .addAll(latLngList) 
      .fillColor(Color.BLUE) 
      .strokeColor(Color.RED) 
      .strokeWidth(3)); 

问候,

PS:如果你有很多的解决方案,请记住我有许多多边形绘制。

回答

1

的SDK目前不支持填充多边形,但是还有一个特点,要求他们在这里补充一下:

https://code.google.com/p/gmaps-api-issues/issues/detail?id=5070

在此期间,一个选择是吸引你的多边形成图像,然后将它们添加为地面覆盖图。这将是非常有限的,但可能作为临时解决方法。

另一种方法是在地图视图的顶部添加另一个视图,并在其中绘制多边形,然后在地图视图移动时更新它们。无法将其他视图与地图视图完全同步,因此在平移/缩放时,多边形会稍微滞后一点,但作为临时解决方法,这也可能适用于您。

UPDATE

这些都只是一些随机的想法去尝试地面叠加的方法,我不知道如果他们的工作,但他们可能让你开始:

我建议转换矩形的纬度/经度角变为MKMapPoint(使用MKMapPointForCoordinate)。这些等效于谷歌的坐标系,缩放等级20

然后,您可以使用MKMapPoint矩形的宽度/高度的纵横比的坐标,以确定您的地面叠加UIImage的纵横比。一旦你有宽高比,你只需要尝试实际的大小(即猜测一个宽度,根据长宽比计算高度)找到一个看起来没问题的。它越大,矩形的细节就越精细,但会使用更多的内存,并且性能可能会越慢。此外,您可能会遇到某种尺寸的硬限制 - 我猜UIImage会被Google Maps SDK转换为纹理,并且纹理在iPhone 3GS +上的最大尺寸为2048x2048。

然后,使用类似于How to setRegion with google maps sdk for iOS?的东西来计算缩放级别和中心纬度/经度。代替地图视图的宽度/高度,您可以使用宽度/高度,并使用矩形的边界而不是所需视图的边界。你也不需要从宽度和高度来计算比例(因为比例应该是相同的) - 所以就使用其中的一个。不要使用缩放级别和中心纬度/经度创建相机,请将它们设置为GMSGroundOverlayOptions。同时将地面覆盖图anchor设置为图像中心(即0.5,0.5)。

上面介绍了如何为每个矩形添加一个GroundOverlay。如果你有很多重叠或附近的矩形,你可以将它们组合成一个单一的UIImage,但这会更复杂一些。

+0

谢谢撒克逊,我已经在Google Map Circle发布了你。 我已经用CGContextFillRect在UIImage中绘制了多边形的解决方案,并且我正在测试许多groundedOverlay的渲染......当您认为Google Maps for iOs团队会使它成为可能吗? – 2013-03-26 08:17:58

+0

我遇到了这个问题:如果我想用精确的坐标绘制一个groundedOverlay,如何知道给叠加图像赋予哪个尺寸,以及选择哪个缩放以精确匹配我的地图? – 2013-03-26 09:24:13

+0

嗨,托马斯,你的多边形是什么形式?他们是经纬度列表,他们是矩形还是一般不规则形状?我不知道Google是否或何时会发布该功能请求。他们似乎在每月发布一次(请参阅https://developers.google.com/maps/documentation/ios/releases),因此下个月可能会推出另一个版本,但我不知道他们可能会选择什么把它放进去。 – 2013-03-26 14:48:24