есть ли способ обновить (т.е. перемещающийся) a MKOverlay
это уже добавляется к MKMapView
. Удаление старого и добавление нового - ужасны (медленный).
т.е. я хотел бы инициировать фоновую функцию, которая вызывает эту функцию, когда наложение перемещается в экран:
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
(с MKAnnotions
немного лучше, что я думаю, но я не могу использовать MKPolyline
, MKPolygon
, и т.д. и целая информация уменьшается до единственной точки),
MKOverlayView
имеет следующие методы, которые заставляют MapKit повторно визуализировать данный mapRect:
- (void) setNeedsDisplayInMapRect: (MKMapRect) mapRect
- (void) setNeedsDisplayInMapRect : (MKMapRect) mapRect zoomScale: (MKZoomScale) zoomScale
Если вы используете таймер (или периодический HTTP-запрос или какой-либо другой метод для определения необходимости обновления вашего наложения), вызовите один из вышеуказанных методов на overlayView заставит его повторно отобразить это место на карте (например, -canDrawMapRect: zoomScale:
будет вызван снова, а затем -drawMapRect: zoomScale: inContext:
будет вызван, если первый возвращает ДА).
Обновление:
Если вы не уверены, какой mapRect нужно повторно визуализировать, вы можете использовать константу MKMapRectWorld
в качестве mapRect - что я полагаю, это приведет к перезагрузке оверлея по всей карте (когда он станет видимым).