我在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);
答案 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
}
}