Чтобы позволить пользователю «нарисовать» произвольный многоугольник на карте, один из подходов заключается в использовании перетаскиваемых аннотаций, которые представляют углы многоугольника.Предоставьте кнопку «Добавить угол» и какую-нибудь кнопку «Удалить угол» в каждой аннотации.
См. Мой ответ Пользователь, создающий окно в MKMapView , для получения более подробной информации.По этому вопросу, однако, OP фактически использовал другое решение, описанное в комментариях, которое будет работать хорошо, если многоугольники всегда являются прямоугольниками.
Для реализации кнопки в представлении аннотации (если вы хотите «Удалить угол»кнопку "на аннотациях), см. мой ответ на Как получить событие нажатия кнопки, добавленной поверх MKAnnotationView .
После того, как у вас есть многоугольник или другое наложение на карте, перетащите егоПрямое касание возможно только при добавлении распознавателя жестов на карту (с отключенной собственной прокруткой) и использовании пользовательских MKOverlay и MKOverlayView, которые позволяют изменять координаты.Кажется, что добавление распознавателя жестов непосредственно в MKOverlayView не работает, а встроенные классы наложения не допускают изменения координат.
Альтернативой перемещению прямыми касаниями является установка некоторых элементов управления сбоку (Кнопки «Вверх», «Вниз», «Влево», «Вправо» и т. Д.), Которые изменяют пользовательское наложение.
Пример приложения Apple Breadcrumb дает пример пользовательского наложения / вида для пути.В WWDC 2010 образец приложения LocationReminders дает пример настраиваемого наложения / представления для круга, который может перемещаться и изменять размер.
Наконец, когда вы выполняете поиск предприятий, вы можете использовать boundingMapRect оверлея (которыйвсегда является прямоугольником независимо от формы наложения) в качестве ограничивающей рамки для начального поиска, а затем проверьте, соответствует ли координата каждой найденной компании фактической форме наложения, используя ответ на Как определить, находится ли аннотация внутриMKPolygonView (iOS) .