Нужна помощь на Android карте Google - PullRequest
0 голосов
/ 20 декабря 2011

Я уронил значок на карте Google, и если я щелкну по нему, значит, он показывает информацию о месте. Это работает нормально. Но, мое требование заключается в том, что при нажатии на этот значок я хочу перейти на определенную страницу, которая включена в мой код. Например: если я нажму на этот штифт, я хочу перейти на страницу с подробной информацией в приложении. Как я могу добавить событие щелчка для точки карты Google. Вот мой образец фрагмента ..

private MapView mapView;

mapView = (MapView) findViewById(R.id.map_view);
mapView.setBuiltInZoomControls(true);
mapView.setTraffic(true);

List<Overlay> mapOverlays = mapView.getOverlays();
Drawable drawable = this.getResources().getDrawable(R.drawable.pushpin);
CustomItemizedOverlay itemizedOverlay = new CustomItemizedOverlay(drawable, this);
GeoPoint point = new GeoPoint((int)(12.826782 * 1e6),(int)(80.220298 * 1e6));
OverlayItem overlayitem = new OverlayItem(point, "Hello", "Helloo World!");
itemizedOverlay.addOverlay(overlayitem);
mapOverlays.add(itemizedOverlay);

MapController mapController = mapView.getController();
mapController.animateTo(point);
mapController.setZoom(3);

1 Ответ

0 голосов
/ 20 декабря 2011

В вашем CustomItemizedOverlay необходимо переопределить ItemizedOverlay.onTap (int).

У вас будет что-то подобное:

@Override
protected boolean onTap(int index) {
  OverlayItem item = mOverlays.get(index);
  // Do something with the item
  return true;
}

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

public class CustomItemizedOverlay extends ItemizedOverlay {

    private MapItemListener mMapItemListener;

    ...

    public void setMapItemListener(MapItemListener mapItemListener) {
        this.mMapItemListener = mapItemListener;
    }


    @Override
    protected boolean onTap(int index) {
      OverlayItem item = mOverlays.get(index);

      if (mMapItemListener != null){
        mMapItemListener.onMapItemTap(item);
      }

      return true;
    }

    public interface MapItemListener {
            void onMapItemTap(OverlayItem item);
    }
}

А в твоей деятельности:

public class MyMapActivity extends MapActivity implements MapItemListener {


    protected void myInitMapMethod(){
        ...
        CustomItemizedOverlay itemizedOverlay = new CustomItemizedOverlay(drawable, this);
        itemizedOverlay.setMapItemListener(this);
        ...
    }

    @Override
    public void onMapItemTap(OverlayItem item) {
        // Start activity
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...