Как добавить наложения, разработанные пользователем, по нажатию кнопки на карте - PullRequest
1 голос
/ 07 сентября 2011

Я заинтересован в том, чтобы добавить опцию в мое приложение ГИС-карты, возможность рисовать наложения полигонов, кругов, многогранников, чтобы пользователь мог искать данные внутри. Проблема в том, что я прочитал и протестировал коды для рисованияналожение, но они всегда статичны. Я хочу, чтобы они были динамическими, с динамическим центром и точками (или радиусом), установленными пользователем при нажатии. Для меня загадка. (Я новичок в программировании iPhone, это мой первыйприложение.) И я не использую и не хочу использовать такие вещи, как ArcGIS API для iPhone. Буду признателен за любую помощь.

1 Ответ

1 голос
/ 08 сентября 2011

Чтобы позволить пользователю «нарисовать» произвольный многоугольник на карте, один из подходов заключается в использовании перетаскиваемых аннотаций, которые представляют углы многоугольника.Предоставьте кнопку «Добавить угол» и какую-нибудь кнопку «Удалить угол» в каждой аннотации.

См. Мой ответ Пользователь, создающий окно в MKMapView , для получения более подробной информации.По этому вопросу, однако, OP фактически использовал другое решение, описанное в комментариях, которое будет работать хорошо, если многоугольники всегда являются прямоугольниками.

Для реализации кнопки в представлении аннотации (если вы хотите «Удалить угол»кнопку "на аннотациях), см. мой ответ на Как получить событие нажатия кнопки, добавленной поверх MKAnnotationView .

После того, как у вас есть многоугольник или другое наложение на карте, перетащите егоПрямое касание возможно только при добавлении распознавателя жестов на карту (с отключенной собственной прокруткой) и использовании пользовательских MKOverlay и MKOverlayView, которые позволяют изменять координаты.Кажется, что добавление распознавателя жестов непосредственно в MKOverlayView не работает, а встроенные классы наложения не допускают изменения координат.

Альтернативой перемещению прямыми касаниями является установка некоторых элементов управления сбоку (Кнопки «Вверх», «Вниз», «Влево», «Вправо» и т. Д.), Которые изменяют пользовательское наложение.

Пример приложения Apple Breadcrumb дает пример пользовательского наложения / вида для пути.В WWDC 2010 образец приложения LocationReminders дает пример настраиваемого наложения / представления для круга, который может перемещаться и изменять размер.

Наконец, когда вы выполняете поиск предприятий, вы можете использовать boundingMapRect оверлея (которыйвсегда является прямоугольником независимо от формы наложения) в качестве ограничивающей рамки для начального поиска, а затем проверьте, соответствует ли координата каждой найденной компании фактической форме наложения, используя ответ на Как определить, находится ли аннотация внутриMKPolygonView (iOS) .

...