Надуйте воздушный шар, когда элемент выбран - PullRequest
2 голосов
/ 22 мая 2011

У меня есть действие с картой, в котором есть много булавок, и когда я щелкаю булавку, открывается пользовательский шарик, показывающий некоторую информацию об этом булавке.Кроме того, у меня есть панель поиска, где, если вы введете название кнопки, там появится информация, но я хочу, чтобы она перешла на этот искомый контакт. Пример: на карте у вас есть разные кегли для овощей, и при поиске моркови в списке поиска будет отображаться элемент морковь, а при нажатии на него, шарик для морковного штифта раздуется.. Итак, мой вопрос : есть ли какой-нибудь OnTap () void метод?Я знаю, что OnTap (int index) возвращает логическое значение.

1 Ответ

4 голосов
/ 29 июня 2011

создайте свое собственное наложение элементов и переопределите метод onTap, а в своем основном классе создайте экземпляр наложения элементов и вызовите overlay.onTap (point)

Пример кода:

public class MyItemizedOverlay<Item> extends ItemizedOverlay<OverlayItem> {
    private ArrayList<OverlayItem> m_overlays;
    private MapView mapView;
    final MapController mc;

    public MyItemizedOverlay(Drawable defaultMarker, MapView mapView) {
        super(boundCenterBottom(defaultMarker), mapView);
        m_overlays = new ArrayList<OverlayItem>();
        mc = mapView.getController();
        populate();
    }

    public void addOverlay(OverlayItem overlay) {
        m_overlays.add(overlay);
        setLastFocusedIndex(-1);
        populate();
    }

    public ArrayList<OverlayItem> getOverlays() {
        return m_overlays;
    }

    public final boolean onTap(int index) {
        GeoPoint point;
        point = createItem(index).getPoint();
        mc.animateTo(point);    
        return true;
    }

    ...
}

В основном классе

public class Main extends MapActivity {
    private MapView mapView;
private List<Overlay> mapOverlays;
    private MyItemizedOverlay overlay;
private Drawable pin;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        doAction();
    }

    private void doAction() {
    mapView = (MapView)findViewById(R.id.map_view);
        pin = res.getDrawable(R.drawable.pin);

        overlay = new MyItemizedOverlay(pin, mapView);

        GeoPoint point = new GeoPoint((int)(7*1E6),(int)(42*1E6));
        overlayItem = new OverlayItem(point, "title", "text");

    overlay.addOverlay(overlayItem);

        mapOverlays = mapView.getOverlays();
    mapOverlays.add(overlay);

        //we tap the point here
        overlay.onTap(0);
    }
}
...