Можно ли использовать 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, если это еще не подразумевается.


person RobertyBob    schedule 07.05.2016    source источник


Ответы (2)


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

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

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

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

person Daij-Djan    schedule 07.05.2016
comment
Большое спасибо. Это немного выше моего понимания, но я работаю над этим, чтобы проверить. - person RobertyBob; 08.05.2016
comment
mapkit всегда разделяет аннотации пополам таким образом.. аннотацию или наложение для добавления к представлению (только данные) и соответствующее представление или средство визуализации (которое визуально представляет данные) - person Daij-Djan; 08.05.2016
comment
Проголосовал за то, что указал мне правильное направление - мое фактическое решение изложено ниже. Большое спасибо. - person RobertyBob; 08.05.2016

Итак, благодаря Дайдж-Джану, мне удалось построить 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
}
person RobertyBob    schedule 08.05.2016