百度地圖android開發給MarkerOptions設定自定義的佈局樣式
阿新 • • 發佈:2019-02-20
一開始我解決這個問題的思路是先百度看看有沒有現成的拿來用,找半天沒找到,最後自己在看百度地圖的api時發現了,百度地圖提供的那個例項化方法,問題自然就迎刃而解了。建議大家以後解決問題時先去研究官方的API,實在不行再去搜索大牛的部落格來學習,不要一遇到問題不想就去百度找答案。這不是好程式設計師要做的事情,自己多研究才能與時俱進,便於以後自己去學習新技術!
廢話到此,先上效果圖:(下圖,檢索到的加油站上方還有一行文字簡單描述了加油站的資訊)
自定義MarkerOptions的佈局樣式關鍵在於建立他的icon是自定義實現的,也就是說要自定義BitmapDescriptor。
BitmapDescriptor <span style="color:#ff0000;">bd_temp</span> ;
MarkerOptions oo = new MarkerOptions().position(ll1)<strong><span style="color:#ff0000;">.icon(bd_temp)</span></strong>
.anchor(0.5f, 1.0f).zIndex(7);
自定義BitmapDescriptor,就要用到他其中之一的工廠方法來例項化一個BitmapDescriptor,也就是:
View <span style="color:#ff0000;">v_temp</span>=LayoutInflater.from(getApplicationContext()).inflate(R.layout.text_up_img_down, null);//載入自定義的佈局 TextView tv_temp = (TextView) v_temp.findViewById(R.id.baidumap_custom_text);//獲取自定義佈局中的textview ImageView img_temp = (ImageView) v_temp.findViewById(R.id.baidumap_custom_img);//獲取自定義佈局中的imageview tv_temp.setText(name);//設定要顯示的文字 img_temp.setImageResource(imgIds[i]);//設定marker的圖示 <span style="color:#ff0000;">bd_temp</span>=BitmapDescriptorFactory.<span style="color:#ff0000;">fromView(v_temp)</span>;//用到了這個例項化方法來把自定義佈局實現到marker中。
至此就可以將自定義的佈局載入到marker中了
mBaiduMap.addOverlay(oo);
自定義佈局檔案text_up_img_down.xml(文字在上圖示在下):
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center_horizontal" > <TextView android:id="@+id/baidumap_custom_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#000" android:text="這是文字在上" android:textSize="15sp" /> <ImageView android:id="@+id/baidumap_custom_img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/icon_gcoding"/> </LinearLayout>
效果圖: