Как общаться с Android наложение карты на MapView - PullRequest
0 голосов
/ 31 августа 2011

У меня есть проблема, которая приводила меня в бешенство в течение нескольких дней - я бродил по Интернету, но не могу найти ответ на вопрос, который должен быть простой.

Я пишу приложение для Android, которое использует карту для отображения булавок в определенных местах. Когда пользователь нажимает на один из выводов, я хотел бы отобразить информационное окно с некоторыми дополнительными деталями. Простой!

У меня есть класс, который расширяет MapActivity (и содержит MapView ) и другой, который расширяет Overlay (обратите внимание, что я не использую ItemizedOverlay из-за количество выводов и производительность были слишком медленными). В классе Overlay есть процедура проверки попадания, которая определяет, нажал ли пользователь на булавку или нет, и если так, будет отображаться простой прямоугольник над булавкой с деталями. Все отлично работает, но выглядит не очень хорошо.

Я хочу отобразить красивую речевую выноску, которая со временем также будет содержать одну или две кнопки для выполнения дополнительных операций. После долгих осмотров я нашел эту запись в блоге , и она, казалось, соответствовала всем требованиям. В посте подчеркивается тот факт, что MapView, который я поместил в свою MapActivity, является ViewGroup, поэтому может содержать дополнительные представления, то есть представление, представляющее мою речевую выноску. Однако, хотя я могу следовать частичному исходному коду, у меня возникают проблемы с его подключением - вот где мне нужна помощь.

Я создал свое изображение 9patch и макет для его хранения, и, в качестве теста, если я добавлю код в класс MapActivity, я смогу отобразить выноску. Проблема заключается в том, что мне нужно иметь возможность определить, какой контакт пользователь нажал, чтобы я мог получить координаты и связанную информацию, и это обрабатывается наложением.

Итак, как мне подключить это так, чтобы, когда пользователь нажимает булавку на оверлее, вызывается MapActivity, чтобы добавить новый «вид выноски» в MapView в соответствующем месте со связанным текстом?

Обновление:

Ну, я потратил немного больше времени, чтобы взглянуть на пример проекта, процитированный в сообщении в блоге Я имею в виду выше и теперь имею рабочий смысл Ранее я отклонил это, поскольку он использовал ItemizedOverlay, но подход был достаточно здравым. По сути, я пересмотрел свой класс Overlay, чтобы принимать MapView в качестве параметра в конструкторе, поэтому теперь у меня есть доступ к нему без необходимости обратного вызова MapActivity. Это звучит достаточно просто, но я пытался покинуть Overlay, чтобы сделать то, что ему нужно, то есть отобразить маркеры, и не пришлось возиться с родительским MapView. Факт в том, что теперь это работает, и я могу продолжить работу с остальной частью кода.

1 Ответ

0 голосов
/ 31 августа 2011

Я не уверен, что именно вы ищете.Вы можете найти хороший учебник, чтобы выяснить, какая точка была поражена во время onTap, а затем получить наложение и распечатать некоторые элементы на карте.

Чтобы отобразить информацию о местоположении исправлений, вы можете поместить все свои информационные компоненты на место в своем xml с невидимой видимостью и изменить ее на видимую, если наложение было затронуто.

Надеюсь, это поможет,Stéphane

...