在Android谷歌地图上需要帮助

时间:2011-12-20 13:16:45

标签: android google-maps

我在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 :(得分:0)

在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
    }

}