是否可以将GMSPolygon与MKMapView一起使用?

时间:2016-05-07 14:39:15

标签: xcode swift google-maps mkmapview gmsmapview

我有一个通过点坐标创建的GMSPolygon,我需要将它与我的mapView集成。但是地图是mkMapView。

由于我正在使用群集引脚等,我希望保留我在地图上完成的工作,但现在这会导致所需的其他功能出现问题。

代码如下(mainMapView是一个mkMapView)

let rectangle = GMSPolygon(path: path)
rectangle.map = GMSMapView(mainMapView)
rectangle.fillColor = UIColor(red:0, green:0, blue:0.3, alpha:0.5)

有没有办法将GMSPolygon与mkMapView结合使用?

感谢。

编辑:我应该指出这条路径'是一个GMSMutablePath,如果不是暗示的那样。

2 个答案:

答案 0 :(得分:1)

当然,没有任何现成的,但可以快速完成自定义桥接

  1. 你写了一个班级MyPolygonOverlay。符合MKOverlay。您可以使用GMSPolygon初始化。
  2. 分配它,将其传递给gmspolygon并使用addOverlay
  3. 将其添加到mkmapview
  4. 你写了一个班级MyPolygonOverlayRenderer。可以绘制MyPolygonOverlay(或者更确切地说是GMSPolygon)。您的mkmapview委托需要在rendererForOverlay方法
  5. 中提供此功能

    注意MyPolygonOverlayRenderer,您可以继承MKPathOverlayRenderer并将GMSPath转换为CGPath:)

    如果有问题,请随时回复

答案 1 :(得分:1)

感谢Daij-Djan,我已经成功地以下列方式构建了MKPolygon。

var mkPoints = [CLLocationCoordinate2D]()

然后将点添加到数组中。

let c = CLLocationCoordinate2DMake(pointInCoord.latitude, pointInCoord.longitude)
mkPoints.append(c)

添加MKPolygon。

let polygon = MKPolygon(coordinates: &mkPoints, count: mkPoints.count)
mainMapView.addOverlay(polygon)

然后添加渲染器。

func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer {
    let pr = MKPolygonRenderer(overlay: overlay)
    pr.fillColor = UIColor(red: 51/255, green: 204/255, blue: 255, alpha:0.5)
    return pr
}