[Android]百度地圖之幾何標註和文字覆蓋物

NO IMAGE

百度地圖SDK提供多種結合圖形覆蓋物,利用這些圖形,可幫助您構建更加豐富多彩的地圖應用。
1、在activity_mail.xml中,新建一個MapView

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<!-- 新增百度地圖控制元件 -->
<com.baidu.mapapi.map.MapView  
android:id="@ id/bmapView"  
android:layout_width="fill_parent"  
android:layout_height="fill_parent"  
android:clickable="true" />
</LinearLayout>

2、在MainActivity.java中, 構建幾何形狀的OverlayOptions,新增到百度地圖當中。

// 幾何圖形的標註
LatLng pt1 = new LatLng(39.93923, 116.357428);
LatLng pt2 = new LatLng(39.91923, 116.327428);
LatLng pt3 = new LatLng(39.89923, 116.347428);  
LatLng pt4 = new LatLng(39.89923, 116.367428);  
LatLng pt5 = new LatLng(39.91923, 116.387428);
List<LatLng> list = new ArrayList<LatLng>();
list.add(pt1);
list.add(pt2);
list.add(pt3);
list.add(pt4);
list.add(pt5);
OverlayOptions polygonOption  = new PolygonOptions().points(list).fillColor(0xAAFFFF00).stroke(new Stroke(5,0xAA00FF00));
mBaiduMap.addOverlay(polygonOption);

OverlayOptions 是個抽象類介面,已知的子類有:ArcOptions, CircleOptions, DotOptions, GroundOverlayOptions, MarkerOptions, PolygonOptions, PolylineOptions, TextOptions。

通過例項化textOption,我們還可以構建文字覆蓋物。程式碼如下:

        /**
* 文字覆蓋物
*/
// 定義文字顯示的座標點
LatLng llText = new LatLng(39.86923, 116.397428);
// 構建文字option物件
OverlayOptions textOption = new TextOptions().bgColor(0xAAFFFF00).fontSize(24).fontColor(0xFFFF00FF).text("百度地圖SDK").rotate(-30).position(llText);
mBaiduMap.addOverlay(textOption);

通過例項化GroundOverlayOptions,我們還可以構建地形圖圖層(圖片圖層)。程式碼如下:

        /**
* 地形圖圖層(圖片圖層)
*/
LatLng southwest = new LatLng(39.92235, 116.380338);
LatLng northeast = new LatLng(39.947246, 116.414977);  
LatLngBounds bounds = new LatLngBounds.Builder()  
.include(northeast)  
.include(southwest)  
.build();  
BitmapDescriptor bdGround = BitmapDescriptorFactory  
.fromResource(R.drawable.icon_marka); 
OverlayOptions ooGround = new GroundOverlayOptions()
.positionFromBounds(bounds)
.image(bdGround)
.transparency(0.8f);
mBaiduMap.addOverlay(ooGround);