Теперь нужна помощь. Я могу рисовать линии с помощью MKPolyline и MKPolylineView, но как рисовать линии дуги или кривой между двумя координатами на MKMapView? Большое спасибо.
Окончательное решение
Наконец, я написал себе эти выводы, чтобы помочь тем, кто этого хочет.
Если вы хотите:
- просто нарисуйте дугу на карте
- просто нарисуйте изображение на карте
- объединить путь дуги и изображение как оверлей на карте
Итак, решения:
- Есть MKPolyline и MKPolylineView для рисования линий, MKPolygon и MKPolygonView для рисования полигонов, MKCircle и MKCircleView, чтобы нарисовать круги. Никто не подходит? Где дуга? О да. Теперь действительно решение: вы создаете пользовательский класс из MKOverlayPathView и переопределяете метод -createPath, в -createPath вы создаете использование дуги CGContextAddArcToPoint или другие функции, которые вам нравятся, и сопоставьте путь, который вы только что создали, к свойству пути MKOverlayPathView, и пользовательские работы будут выполнены. Затем вы добавляете MKPolyline на карту (да! Просто MKPolyline!), Затем в методе -mapView: viewForOverlay: вы создаете пользовательский класс для этой полилинии. Затем просто запустите его, все работает по вашему желанию. Магия? вы можете нарисовать MKPolyline как дугу!
- Просто изображение? Используйте MKAnnotationView. Это сделано! ты можешь это сделать! Я верю, что!
- В моей проблеме я хочу нарисовать дугу с изображением в оверлее. Поэтому я создаю пользовательский класс, соответствующий протоколу MKOverlay, и пользовательский класс, полученный из MKOverlayView, чтобы нарисовать этот оверлей. Все работает отлично, но я не могу нарисовать какой-либо путь на карте! Я установил lineWidth в 1,2,3,4... но это не сработало! Ах.. в решении задается ширина линии с помощью функции MKRoadWidthAtZoomScale (zoomScale), и вы можете увидеть путь! Это сделано......
И некоторые советы здесь:
- Используйте Core Graphic для рисования путей, а не координат MapKit и координат UIView!
- В функциях CG просто имейте в виду, что ширина строки должна быть преобразована этой функцией: MKRoadWidthAtZoomScale (zoomScale)
- Надеемся помочь.