Можно ли использовать GMSPolygon с MKMapView?

У меня есть 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 ответа

Конечно, ничего готового, но пользовательский мост не может быть сделан быстро

  1. ты пишешь класс MyPolygonOverlay, что соответствует MKOverlay. Это вы можете инициализировать с помощью GMSPolygon.
  2. выделить его, передать ему gmspolygon и добавить его в mkmapview с помощью addOverlay
  3. ты пишешь класс MyPolygonOverlayRenderer, что может нарисовать MyPolygonOverlay (точнее GMSPolygon). ваш делегат mkmapview должен предоставить это в rendererForOverlay метод

записка для MyPolygonOverlayRenderer, вы можете наследовать MKPathOverlayRenderer и конвертировать GMSPath в CGPath, может быть:)

HF и не стесняйтесь вернуться в случае возникновения вопросов

Благодаря 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
}
Другие вопросы по тегам