перемещение/обновление MKOverlay на MKMapView

есть ли способ обновить (т.е. перемещающийся) a MKOverlay это уже добавляется к MKMapView. Удаление старого и добавление нового - ужасны (медленный).

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

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay

MKAnnotions немного лучше, что я думаю, но я не могу использовать MKPolyline, MKPolygon, и т.д. и целая информация уменьшается до единственной точки),

8
задан Darshan Kunjadiya 24 December 2013 в 06:50
поделиться

1 ответ

MKOverlayView имеет следующие методы, которые заставляют MapKit повторно визуализировать данный mapRect:

- (void) setNeedsDisplayInMapRect: (MKMapRect) mapRect

- (void) setNeedsDisplayInMapRect : (MKMapRect) mapRect zoomScale: (MKZoomScale) zoomScale

Если вы используете таймер (или периодический HTTP-запрос или какой-либо другой метод для определения необходимости обновления вашего наложения), вызовите один из вышеуказанных методов на overlayView заставит его повторно отобразить это место на карте (например, -canDrawMapRect: zoomScale: будет вызван снова, а затем -drawMapRect: zoomScale: inContext: будет вызван, если первый возвращает ДА).


Обновление:

Если вы не уверены, какой mapRect нужно повторно визуализировать, вы можете использовать константу MKMapRectWorld в качестве mapRect - что я полагаю, это приведет к перезагрузке оверлея по всей карте (когда он станет видимым).

4
ответ дан 5 December 2019 в 22:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: