在我们使用Android百度地图开发的时候,很多时候会有一个需求,需要在地图上添加标注,代码如下:
BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.icon_marka);
OverlayOptions overlayOptions = new MarkerOptions().position(new LatLng(latitude,longitude)).icon(bitmapDescriptor);
Marker marker=(Marker) baiduMap.addOverlay(overlayOptions);
点击地图图标后触发逻辑如下:
@Override
public boolean onMarkerClick(Marker marker) {
//点击后的响应逻辑
}
其中:
baiduMap.setOnMarkerClickListener(this);
那么,问题来了,如果用户要求添加多个图标,并且每个图标有各自的点击响应逻辑时,该怎么处理呢?代码如下:
Bundle mBundle = new Bundle(); //使用Bundle来标识每一个标注的信息
mBundle.putInt("id",i);
// 地图标注
BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.icon_marka);
OverlayOptions overlayOptions = new MarkerOptions().position(new LatLng(hotelMsgList.get(i).latitude,hotelMsgList.get(i).longitude)).icon(bitmapDescriptor);
Marker marker=(Marker) baiduMap.addOverlay(overlayOptions);
marker.setExtraInfo(mBundle);
上例外面可加个for循环来创建地图标注,由上面代码可知通过一个Bundle对象,来存放每一个标注唯一的key,响应时通过取出Bundle中的key来识别是哪一个标注,响应代码如下:
@Override
public boolean onMarkerClick(Marker marker) {
Bundle bundle = marker.getExtraInfo();
int id = bundle.getInt("id");
//选择响应逻辑
}
通过上面的例子简单地实现了百度地图的多标注响应,效果图如下。