Используя OnTap(int i) с несколькими слоями ItemizedOverlay
Мне пришлось показывать несколько (около 600, все кликабельно, чтобы показать некоторую информацию о них) наложения элементов на карте. Что касается проблем с производительностью, я подумал, что было бы разумно сгруппировать их в разные классы ItemizedOverlay, потому что каждая группа будет отображать различную информацию о них. (В частности, это аэропорты, VOR, NDB и тому подобное об авиации).
Моя проблема в том, что если я разделю их на классы и покажу их, производительность будет супер. Карта течет бегло. Но когда я добавляю второй слой поверх первого, элементы первого слоя становятся не щелкаемыми.
Когда я много читал и отлаживал с помощью метода Log.i, я понимал, что каждый слой щелкается, но вызывается только метод OnTap(Geopoint point, MapView mapview). Вызов super.onTap(point, mapview) не сработал. Мне нужен метод onTap(int index) для идентификации маркера. (У меня есть оба метода в моих классах (после того, как я прочитал много примеров)).
И что же мне делать? Есть ли способ решить мою проблему? Я не хочу вдаваться в сложные подходы, такие как сравнение нажатых координат со всеми координатами элементов наложения, чтобы найти что-нибудь близкое.
Заранее спасибо.
1 ответ
Способ onTop (и любое другое сенсорное событие работает на Android) заключается в том, что он будет пинговать все объекты, которые находятся в координатах, пока один из onTaps (или любое другое сенсорное событие) не вернет true. В этом случае ваш метод onTap(Geopoint point, MapView mapview) возвращает true. Это использует это событие касания и не позволяет ему передаваться другим событиям onTap. Если вы заставите событие onTap вернуть false, другие события onTap будут проверены. Надеюсь, это поможет.