Android Marker Click 处理


首先,增加一个marker 到 Android map 中:
可以先写一个类,
private class SitesOverlay extends ItemizedOverlay<OverlayItem> {
private List<OverlayItem> items = new ArrayList<OverlayItem>();
private Drawable marker =null;
public SitesOverlay(Drawable marker,GeoPoint p) {
super(marker);
this.marker = marker;
items.add(new
OverlayItem(p,null,null));
populate();
}
@Override
protected OverlayItem createItem(int i) {
return (items.get(i));
}

@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
super.draw(canvas, mapView, shadow);
boundCenterBottom(marker);// 调整一个drawable的边界,使得(0,0)是drawabled底部中心的  //一个像素。
}
@Override
//处理对这个marker的点击事件
protected boolean onTap(int i) {
}
@Override
public int size() {
return (items.size());
}
}
在MapActivity中调用:
GeoPoint point=new GeoPoint(39907794, 116356694);
Drawable marker=getResources().getDrawable(R.drawable.pic);//在资源中选择一个图片
marker.setBounds(0, 0, marker.getIntrinsicWidth(), marker.getIntrinsicHeight());
mapView.getOverlays().add(new SitesOverlay(marker,point));
这样图片的标记结果如下


然后再在onTap(i)
函数中增加一个输出语句:Toast.makeText(this, "点击图标", Toast.LENGTH_SHORT).show();
如果对这个图标进行点击的话,就会出现下面的结果,对图标以外的结果点击的话,不会在屏幕上出现”点击图标“四个字



也可以用Overlay 来实现对marker的处理。但是,我在实现的时候,不能既用Overlay 跟 ItemizedOverlay两个都实现onTap(),这样的话,在地图上任意一点点击的话,都会显示。

相关内容