在上一片博客中已经讲述了如何定位,这里主要讲根据数据源来添加覆盖物,在百度的demo中就只是演示了他固定添加了几个覆盖物,但是在实际项目中需要添加的添加的覆盖物就不是固定的,需要根据list集合数据源来添加,并且需要为这些覆盖物添加上对应的点击事件。
markers=new Marker[rodlist.size()];
for (int i=0;i<rodlist.size();i++){
double lat=rodlist.get(i).getGeo().getLat();
double lng=rodlist.get(i).getGeo().getLng();
LatLng latLng = new LatLng(lat,lng);
if (rodlist.get(i).getType()==1) {
OverlayOptions radpacketA = new MarkerOptions().position(latLng).icon(rad_packet);
markers[i] = (Marker) (mBaiduMap.addOverlay(radpacketA));
}else if(rodlist.get(i).getType()==2){
OverlayOptions radpacketB = new MarkerOptions().position(latLng).icon(chests);
markers[i] = (Marker) (mBaiduMap.addOverlay(radpacketB));
}else if (rodlist.get(i).getType()==3){
OverlayOptions radpacketC = new MarkerOptions().position(latLng).icon(gift_bag);
markers[i] = (Marker) (mBaiduMap.addOverlay(radpacketC));
}
Marker是覆盖物 OverlayOptions这个属性中可以为放入这个覆盖物的坐标,它的显示图片,还可以添加不断变化的动画。
BitmapDescriptor mCurrentMarker
= BitmapDescriptorFactory.fromResource(R.mipmap.position_default);
这个就是创建覆盖物图片的对象。
我的这个rodlist中有三个Type我需要根据不同的Type添加不同的图片。应为有许多个 marker 所有我将所有marker放在了一个marker的数组中。
这样地图上就会显示出来所有的覆盖物了。
然后就是这些覆盖物的点击效果了。
mBaiduMap.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {