最近公司在重做客戶端,陸陸續續改了很多頁面,不得不說比之前好看了許多,不過某些好看的頁面就會苦了我們這些開發。
需求:
新版本中有利用百度地圖加多個maker的功能,點擊maker上面浮一個彈窗並且maker放大,點其他marker之後剛纔點擊的要恢復原樣,本以爲不是一個很複雜的功能,奈何百度sdk總是給我意想不到的驚喜。
至於怎麼添加maker就不多介紹了,這裏主要來講maker的點擊事件
mBaiduMap.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(final Marker marker) {
return true;
}
});
上面就是百度地圖的maker點擊事件了,可以看到百度地圖告訴了我們當前點擊的maker。我們可以想一下,如果沒處理的話點擊哪個maker都會改變狀態,那我們如果記錄住上次點擊的maker,將上一次的還原並改變這次點擊的不就ok了,於是一個簡單的實現方式便從我機智的頭腦中浮現出來。
private Marker lastMaker = null;//定義一個上次點擊的marker
//marker的點擊事件
mBaiduMap.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(final Marker marker) {
if (lastMaker != null) {//首先做非空判斷
//判斷上次點擊的和本次是不是同一個
if (lastMaker.getId() == marker.getId()) {
} else { //不是的話把上次的還原
BitmapDescriptor bitmap = BitmapDescriptorFactory
.fromResource(R.drawable.icon_loc_unselect);
lastMaker.setIcon(bitmap);
}
}
lastMaker = marker;//記錄當前選中的marker
//將本次的設置爲選中狀態
BitmapDescriptor bitmap = BitmapDescriptorFactory
.fromResource(R.drawable.icon_loc_select);
marker.setIcon(bitmap);
return true;
}
});
代碼很簡單,通過上面的方法滿足了我的需求。