百度地圖多個maker點擊只改變當前marker,之前點擊的恢復原狀(最簡單實現)

最近公司在重做客戶端,陸陸續續改了很多頁面,不得不說比之前好看了許多,不過某些好看的頁面就會苦了我們這些開發。

需求:

  新版本中有利用百度地圖加多個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;
            }
        });

  代碼很簡單,通過上面的方法滿足了我的需求。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章