Активируемый список в OverlayItem (MapView для Android) - PullRequest
4 голосов
/ 16 ноября 2011

У меня есть вид карты с несколькими выводами, нанесенными на разные адреса.Все работает очень хорошо.Проблема возникает, когда у вас есть несколько элементов, указывающих на один и тот же адрес.Например,

Единица 1/45 ABC Street, XYZ
Единица 7/45 ABC Street, XYZ.

Я использую следующую строку кода для извлечения широты и долготы в порядкесоздать GeoPoint.

List<Address> listfromGoogle = gc.getFromLocationName(a, 1);

, где a - адрес, а gc - объект GeoCoder.

Согласно API, два упомянутых выше адреса возвращают одинаковые координаты.

Таким образом, при построении контактов на карте они перезаписывают друг друга, заканчиваясь одним контактом для нескольких адресов.

Я попытался создать список, который отображает все повторяющиеся адреса на всплывающей подсказке.Попытка была напрасной, и я понял, что

OverlayItem(GeoPoint point, java.lang.String title, java.lang.String snippet) 

позволяет мне предоставить только две строки, которые будут показаны на воздушном шаре.

Есть какие-нибудь подсказки относительно того, как я могу втиснуть в Список, который отображает несколько адресов?

1 Ответ

0 голосов
/ 16 ноября 2011

Вы должны реализовать пользовательский OverlayItem

public class ListOverlayItem extends OverlayItem {
    private List<Address> list;

    public ListOverlayItem(GeoPoint point, List<Address> list) {
        super(point, "", "");
    }

    public List<Address> getList() {
        return list;
    }
}

, затем в вашем пользовательском ItemizedOverlay вы можете использовать этот список для создания настраиваемого диалога со списком в методе onTap

public class ListItemizedOverlay extends ItemizedOverlay<ListOverlayItem> {

    @Override
    protected boolean onTap(int index) {
        // get item they tapped from index
        // use getList() to populate the listview in the custom dialog
    }
}
...