Можно ли использовать 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 ответа
Конечно, ничего готового, но пользовательский мост не может быть сделан быстро
- ты пишешь класс
MyPolygonOverlay
, что соответствует MKOverlay. Это вы можете инициализировать с помощью GMSPolygon. - выделить его, передать ему gmspolygon и добавить его в mkmapview с помощью
addOverlay
- ты пишешь класс
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
}