Изменение цвета MKOverlay, который уже был добавлен в просмотр карты - PullRequest
7 голосов
/ 09 июня 2011

У меня есть несколько MKOverlay (на самом деле это MKPolygons), которые загружаются, как только появляется карта.Я хотел бы изменить их цвет динамически.Единственный способ сделать это - удалить наложение и добавить его обратно с новым цветом.Есть ли лучший способ сделать это на существующем оверлее?

Я новичок в target-c / xcode / ios ... так что будьте осторожны:)

Ответы [ 2 ]

5 голосов
/ 21 июня 2011

Важно помнить, что большая часть MapKit имеет разные объекты (MKPolygon, MKCircle, MKShape) для хранения данных, связанных с рисованием представления (MKPolygonView, MKCircleView, MKOverlayView и т. Д.) Во многих случаях вы хотите получить ссылкук объекту просмотра, так что вы можете установить цвет фона.т.е.

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];
2 голосов
/ 26 апреля 2016

В вашем mapView есть метод для получения объекта рендеринга для данного наложения.Затем вы можете использовать средство визуализации, чтобы изменить цвет наложения.

if let renderer = mapView.rendererForOverlay(overlay) as? MKPolygonRenderer {
    renderer.fillColor = UIColor.redColor()
}

Оставьте опциональный приведение к MKPolygonRenderer, если вы не ищете наложение MKPolygon.

(я понимаю,это довольно старый вопрос, но я наткнулся на него и нашел свое решение ?)

...