1、使用图层ItemizedOverlay标注某个坐标点
// 实现标注item /* 生成ItemizedOverlay图层用来标注结果点 * arg0为mark的Drawable * arg1为MapView * */ ItemizedOverlay<OverlayItem> itemOverlay = new ItemizedOverlay<OverlayItem>( null, mMapView); /* * OverlayItem表示单个overlay数据,如自定义标注,建筑等。是ItemizedOverlay的基本组件, * arg0为GeoPoint,确定item的位置 * arg1为该item的文字片段 * arg2为该item的标题文本 */ OverlayItem item = new OverlayItem(geoPoint, "item的文字片段", "item的标题文本"); // 得到需要标在地图上的资源 Drawable marker = getResources().getDrawable(R.drawable.icon_marka); // 为maker定义位置和边界(左上右下) marker.setBounds(0, 0, marker.getIntrinsicWidth(), marker.getIntrinsicHeight()); // 给item设置marker item.setMarker(marker); // 在图层上添加item itemOverlay.addItem(item); // 清除地图其他图层 mMapView.getOverlays().clear(); // 添加一个标注ItemizedOverlay图层 mMapView.getOverlays().add(itemOverlay); // 设置地图默认的缩放级别 mMapView.getController().setZoom(9); // 执行刷新使生效 mMapView.refresh();
2、使用自定义图层处理点击事件
package com.eroad.component; import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; import android.util.Log; import com.baidu.mapapi.map.ItemizedOverlay; import com.baidu.mapapi.map.MapView; import com.baidu.mapapi.map.OverlayItem; import com.baidu.platform.comapi.basestruct.GeoPoint; /** * @author JL * * 要处理overlay点击事件时需要继承ItemizedOverlay 不处理点击事件时可直接生成ItemizedOverlay. */ public class MyOverLay extends ItemizedOverlay<OverlayItem> { // 处理tap点击的句柄 private Handler handler_item; public MyOverLay(Drawable mark, MapView mapView,Handler handler) { super(mark, mapView); // TODO Auto-generated constructor stub this.handler_item=handler; } // 在此处理item点击事件,并且一定会触发MapView的点击事件 //arg0表示多个item中的序号 @Override protected boolean onTap(int index) { // TODO Auto-generated method stub Log.e("item onTap: " ,""+ index); Message message=Message.obtain(); message.obj=getItem(index); handler_item.sendMessage(message); return true; } // 在此处理MapView的点击事件,不一定会触发item点击事件 @Override public boolean onTap(GeoPoint pt, MapView mapView) { // TODO Auto-generated method stub super.onTap(pt, mapView); Log.e("MapView onTap: " ,""+ pt.toString()); return false; } public interface CallBack { public void excuteTap(); } }
使用自定义图层
MyOverLay myOverLay = new MyOverLay(null, mMapView, new Handler() { @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); OverlayItem item = (OverlayItem) msg.obj; Toast.makeText(getApplicationContext(), "坐标点:" + item.getPoint().toString(), Toast.LENGTH_SHORT).show(); } });
Done!