Изменение цвета MKOverlay, который уже был добавлен в mapview
У меня есть некоторые MKOverlays (на самом деле это MKPolygons), которые загружаются, как только появляется карта. Я хотел бы изменить их цвет динамически. Единственный способ, которым я могу это сделать, - удалить наложение, а затем добавить его обратно с новым цветом. Есть ли лучший способ сделать это на существующем наложении?
Я совершенно новый в objective-c/xcode / ios ... поэтому, пожалуйста, будьте нежны:)
2 ответов
важно помнить, что большая часть MapKit имеет разные объекты (MKPolygon, MKCircle, MKShape) для хранения данных, связанных с рисованием вида (MKPolygonView, MKCircleView, MKOverlayView и т. д.) Во многих случаях вы хотите получить ссылку на объект view, чтобы затем установить цвет фона. т. е.
MKOverlayView *anOverlay; //You need to set this view to the object you are interested in
anOverlay.backgroundColor = [UIColor redColor];
[anOverlay setNeedsDisplay];
Если ваш объект является MKPolygon, вы должны определить MKPolygonView он обращается в затем установить свойство fillColor и перерисовать объект с помощью вызов setNeedsDisplay:
MKPolygonView *theView;
theView.fillColor = [UIColor redColor];
[theView setNeedsDisplay];
в вашем mapView есть метод получения объекта визуализации для данного наложения. Затем вы можете использовать визуализатор для изменения цвета наложения.
if let renderer = mapView.rendererForOverlay(overlay) as? MKPolygonRenderer {
renderer.fillColor = UIColor.redColor()
}
оставьте необязательное приведение в MKPolygonRenderer, если вы не ищете наложение MKPolygon.
(Я понимаю, что это довольно старый вопрос, но я просто наткнулся на него и нашел свое решение)