1. 程式人生 > >百度地圖android開發給MarkerOptions設定自定義的佈局樣式

百度地圖android開發給MarkerOptions設定自定義的佈局樣式

一開始我解決這個問題的思路是先百度看看有沒有現成的拿來用,找半天沒找到,最後自己在看百度地圖的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>

效果圖:



思路比較簡單,寫也的比較簡單,有不周到的還請諒解!