Как мне наложить на GMSMapView тонированные цвета на разных окраинах?

Я создаю приложение со Swift. Я успешно добавил карту Google в свое приложение в качестве подпредставления на моем главном контроллере представления со следующим кодом:

let camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 6.0)
var mapView = GMSMapView.map(withFrame: CGRect(x: screenWidth*0.03, y: 245, width: screenWidth*0.94, height: screenHeight*0.45), camera: camera)
self.view.addSubview(mapView)

Теперь я хочу сделать что-то немного хитрое, но я уверен, что это возможно. Я хочу иметь возможность покрывать различные области карты в моем mapView, заданном именем или почтовым индексом, с различными цветными оттенками, которые можно наносить. Кажется, что это был бы обычный способ сделать карты красивыми, и я уверен, что существует решение, которое бы делало это легко. Как мне это сделать?

1 ответ

Решение

Я нашел способ сделать это! Google Maps API предоставляет! Как только ваша карта настроена, как в моем первоначальном вопросе, вы можете сделать это, чтобы добавить круг на карту:

let circleCenter = CLLocationCoordinate2D(latitude: -33.86, longitude: 151.20)
let circ = GMSCircle(position: circleCenter, radius: 2000)
circ.fillColor = UIColor.green.withAlphaComponent(0.5)
circ.map = mapView

Вы также можете нарисовать более сложные фигуры, которые включают серию широт / длин, например:

let rect = GMSMutablePath()
rect.add(CLLocationCoordinate2D(latitude: 37.886080, longitude: -122.137585))
rect.add(CLLocationCoordinate2D(latitude: 37.899356, longitude: -122.130203))
rect.add(CLLocationCoordinate2D(latitude: 37.900101, longitude: -122.104282))
rect.add(CLLocationCoordinate2D(latitude: 37.879644, longitude: -122.101192))
let polygon = GMSPolygon(path: rect)
polygon.fillColor = UIColor.flatWatermelonDark.withAlphaComponent(0.5)
polygon.strokeColor = .black
polygon.strokeWidth = 2
polygon.isTappable = true
polygon.map = mapView

Я до сих пор не нашел плавного способа наложения любого почтового индекса наложением, но это можно сделать вручную с помощью приведенных выше фрагментов кода путем просмотра / оценки широт / длинных краев областей почтового индекса.

Другие вопросы по тегам