У меня есть проблема, которая приводила меня в бешенство в течение нескольких дней - я бродил по Интернету, но не могу найти ответ на вопрос, который должен быть простой.
Я пишу приложение для Android, которое использует карту для отображения булавок в определенных местах. Когда пользователь нажимает на один из выводов, я хотел бы отобразить информационное окно с некоторыми дополнительными деталями. Простой!
У меня есть класс, который расширяет MapActivity (и содержит MapView ) и другой, который расширяет Overlay (обратите внимание, что я не использую ItemizedOverlay из-за количество выводов и производительность были слишком медленными). В классе Overlay есть процедура проверки попадания, которая определяет, нажал ли пользователь на булавку или нет, и если так, будет отображаться простой прямоугольник над булавкой с деталями. Все отлично работает, но выглядит не очень хорошо.
Я хочу отобразить красивую речевую выноску, которая со временем также будет содержать одну или две кнопки для выполнения дополнительных операций. После долгих осмотров я нашел эту запись в блоге , и она, казалось, соответствовала всем требованиям. В посте подчеркивается тот факт, что MapView, который я поместил в свою MapActivity, является ViewGroup, поэтому может содержать дополнительные представления, то есть представление, представляющее мою речевую выноску. Однако, хотя я могу следовать частичному исходному коду, у меня возникают проблемы с его подключением - вот где мне нужна помощь.
Я создал свое изображение 9patch и макет для его хранения, и, в качестве теста, если я добавлю код в класс MapActivity, я смогу отобразить выноску. Проблема заключается в том, что мне нужно иметь возможность определить, какой контакт пользователь нажал, чтобы я мог получить координаты и связанную информацию, и это обрабатывается наложением.
Итак, как мне подключить это так, чтобы, когда пользователь нажимает булавку на оверлее, вызывается MapActivity, чтобы добавить новый «вид выноски» в MapView в соответствующем месте со связанным текстом?
Обновление:
Ну, я потратил немного больше времени, чтобы взглянуть на пример проекта, процитированный в сообщении в блоге Я имею в виду выше и теперь имею рабочий смысл Ранее я отклонил это, поскольку он использовал ItemizedOverlay, но подход был достаточно здравым. По сути, я пересмотрел свой класс Overlay, чтобы принимать MapView в качестве параметра в конструкторе, поэтому теперь у меня есть доступ к нему без необходимости обратного вызова MapActivity. Это звучит достаточно просто, но я пытался покинуть Overlay, чтобы сделать то, что ему нужно, то есть отобразить маркеры, и не пришлось возиться с родительским MapView. Факт в том, что теперь это работает, и я могу продолжить работу с остальной частью кода.