Если я правильно понял, вам нужно сделать две вещи. Первый заключается в том, чтобы поместить ваше пользовательское изображение в представление карты, чтобы ваши пользовательские плитки отображались в правильных координатах, затем панорамирование, масштабирование и т. д. Второе, что вам нужно сделать, это нарисовать точку на этом изображении на определенной широте и долготе.
Вам нужны пользовательские наложения, доступный в iOS 4 и более поздних версиях. Лучшее место, где можно узнать о пользовательских оверлеях, — это видео WWDC 2010 под названием "Session 127 - Настройка карт с наложениями". Для видео также доступен пользовательский код. В видео ведущий создает пользовательскую карту и встраивает ее в MKMapView. Он также описывает инструмент, который вы можете использовать для создания своих плиток (чтобы разрезать их, помещать их формы в проекцию Меркатора и правильно называть их). Его карта сканируется с морской карты, а затем помещается поверх обычной карты.
Вы можете использовать boundingMapRect
для создания прямоугольника границ путем преобразования границ пользовательской карты в точки. Вы можете конвертировать между точками и координатами, используя MKMapPointForCoordinate
и MKCoordinateForMapPoint
.
Что касается нанесения точки на карту, вы можете сделать это несколькими способами. Проще всего просто использовать пользовательское MKAnnotationView
с точкой в качестве изображения. Таким образом, изображение не увеличивается и не уменьшается при увеличении. Если вы хотите, чтобы точка увеличивалась и уменьшалась, вам также следует использовать для этого пользовательское наложение. Вы можете легко использовать MKCircleView
, который является подклассом MKOverlayView
.
Для стрелки вы можете использовать обычный вид и повернуть ее (и разместить на одной стороне экрана) в соответствии с направлением вашей точки за пределами поля. Используйте MKMapPointForCoordinate
, а затем рассчитайте направление от центра вашего вида.
Но вашим лучшим источником будет это видео. Он очень подробно рассказывает обо всем процессе и дает исходный код рабочего приложения, которое составляет 90% того, что вам нужно для вашей собственной карты.
person
nevan king
schedule
18.09.2010