используя OnTap(int i) с несколькими слоями ItemizedOverlay

Мне пришлось показать несколько (около 600, все кликабельны, чтобы показать некоторую информацию о них) элементы наложения на карте. Что касается проблем с производительностью, я подумал, что было бы разумно сгруппировать их в разные классы ItemizedOverlay, потому что каждая группа будет отображать информацию о них разного типа. (В частности, это аэропорты, VOR, NDB и тому подобное, связанное с авиацией).

Моя проблема в том, что если я разделю их на классы и покажу, производительность будет супер. Карта течет плавно. Но когда я добавляю второй слой поверх первого, элементы на первом слое становятся неактивными.

Когда я много читал и отлаживал с помощью метода Log.i, я понял, что каждый слой щелкается, но вызывается только метод OnTap (точка Geopoint, представление карты MapView). Вызов super.onTap(point, mapview) не сработал. Мне нужен метод onTap(int index) для идентификации маркера. (У меня есть оба метода в моих классах (после того, как я прочитал много примеров)).

И что я должен делать? Есть ли способ решить мою проблему? Я не хочу вдаваться в сложные подходы, такие как сравнение координат щелчка со всеми координатами элементов наложения, чтобы найти что-то близкое.

Заранее спасибо.


person tekin beyaz    schedule 30.05.2012    source источник


Ответы (1)


То, как onTop (и любое другое событие касания работает на Android), заключается в том, что оно будет пинговать любые и все объекты, которые находятся в координатах до тех пор, пока одно из onTaps (или любое другое событие касания) не вернет true. В этом случае ваш метод onTap (точка Geopoint, представление карты MapView) возвращает значение true. Это потребляет это событие касания и не позволяет ему передаваться каким-либо другим событиям onTap. Если вы сделаете так, чтобы событие onTap возвращало false, другие события onTap будут пинговаться. Надеюсь, это поможет.

person Zaid Daghestani    schedule 30.05.2012
comment
Большое спасибо. Это помогло. Я понятия не имел, что обрабатывают эти истинные или ложные значения. :) - person tekin beyaz; 30.05.2012
comment
Да, это тоже заняло у меня некоторое время. Рад, что помог! :) - person Zaid Daghestani; 31.05.2012