這個技術(shù)前幾年是挺火的,現(xiàn)在也幾乎很少app會用到了,但是類似的都可以參考的。

大概和上面的展示一樣,要實現(xiàn)多個氣泡覆蓋物,而且點擊時候怎么判斷是點擊哪幾個呢?或者獲取某個信息呢?。?/p>

大家都知道上面是點擊marker的點擊方法,那么marker怎么區(qū)分呢??下面我們一起來解決這個問題!
首先:我們要自定義一個氣泡的xml,想必上邊的氣泡xml應(yīng)該比較簡單,我這里就不實現(xiàn)了,就用textview來代替
TextView textView = new TextView(getContext());
textView.setText("自定義的覆蓋物");
textView.setTextSize(16);
//將View轉(zhuǎn)換為BitmapDescriptor
BitmapDescriptor descriptor =? BitmapDescriptorFactory.fromView(textView);
在這我還得強調(diào)下: BitmapDescriptor 除了fromView()這個方法之后,百度api 還提供有fromResource(R.drawable.icon_marka)和fromBitmap(Bitmap),我們可以進行把view封裝為Bitmap進行放入其中,下面提供view轉(zhuǎn)換為Bitmap的方法
private Bitmap getViewBitmap(View addViewContent) {
addViewContent.setDrawingCacheEnabled(true);
addViewContent.measure(
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
addViewContent.layout(0, 0,
addViewContent.getMeasuredWidth(),
addViewContent.getMeasuredHeight());
addViewContent.buildDrawingCache();
Bitmap cacheBitmap = addViewContent.getDrawingCache();
Bitmap bitmap = Bitmap.createBitmap(cacheBitmap);
return bitmap;
}
上面得到 BitmapDescriptor 之后 然后我們根據(jù)不同的經(jīng)緯度加入到其中 ,多個氣泡可以傳入 集合list,
//構(gòu)建MarkerOption,用于在地圖上添加Marker
OverlayOptions option =new? MarkerOptions().position(point).icon(descriptor);
//在地圖上添加Marker,并顯示
Marker mMarkerA = (Marker)mBaiduMap.addOverlay(option);
那么問題來了,如果要我們點擊某一個氣泡,并且在之前List里面取數(shù)據(jù)取顯示呢?咋辦呢?開始很多人想,把上面的每一個mMarkerA,也放在集合里面,每個給他一個flage標(biāo)志,然后遍歷判斷是否是當(dāng)前的。然后再取數(shù)據(jù)進行點擊傳遞。如果這樣做那么大家就繞彎路了,開始我也是這樣的。如果大家留意會發(fā)現(xiàn) Marker 提供給大家一個方法對我們android 開發(fā)很熟悉的Marker.setExtraInfo(bundle).. 那么我們可以把所有點擊的信息綁定再當(dāng)前的Marker里面。

點擊之后我們只需要? LegWorkDetailBean entity =(LegWorkDetailBean) marker.getExtraInfo().get("info");
這樣就可以獲取到點擊當(dāng)前的某個氣泡的具體信息了!
總結(jié),寫得不太清楚,有點亂,希望對大家有用,謝謝!