標注(Marker)是開發者最常使用的地圖覆蓋物志一,今天就來向大家介紹一些標注(Marker)的最基本使用方法!
實現目標:
1、構建基礎地圖頁面;
2、在地圖的中心點處添加 Marker;
3、實現 Marker 的點擊事件響應;
4、實現 Marker 的添加和靈活刪除;
為了實現以上目標,我們會分成以下若干步驟來進行。
第一步、創建工程,導入百度地圖 Android SDK;
具體創建工程的方式(略)。本示例主要是為了實現地圖及相關的覆蓋物功能,因此這里我只使用 SDK 開發資源下載平台所提供的【基礎地圖】功能模塊即可。
相應下載地址為:http://lbsyun.baidu.com/sdk/download
勾選如圖所示:
選擇完成后,點擊開發包下載,將所下載開發包正確導入開發工程。
第二步、申請開發者秘鑰;
工程創建完成后,到 API 控制台,申請相應的開發秘鑰,為具體開發工作准備。
具體申請方式及注意事項,請參考: 此處不再贅述。
第三步、修改 AndroidManifest 文件,添加開發秘鑰和所需權限;
在 AndroidManifest 文件中,添加開發秘鑰和所需權限。
添加開發秘鑰方式如下:
android:name="com.baidu.lbsapi.API_KEY"
android:value="開發秘鑰!" />注意在 application 里面。
添加所需權限如下:
第四步、創建基礎地圖;
在 xml 文件中添加 mapview 控件,如下所示:
android:id="@+id/bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" />在 java 代碼中初始化地圖 SDK,實現基礎地圖的展示:
//初始化地圖 SDKSDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main);//綁定XML中得 mapview 控件mapView = (MapView) findViewById(R.id.bmapView);
第五步、獲取地圖中心點,並添加 Marker 對象;
實現的核心代碼如下:
baiduMap = mapView.getMap();
LatLng latLng = baiduMap.getMapStatus().target;
//准備 marker 的圖片
BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher);
//准備 marker option 添加 marker 使用
markerOptions = new MarkerOptions().icon(bitmap).position(latLng);
//獲取添加的 marker 這樣便於后續的操作
marker = (Marker) baiduMap.addOverlay(markerOptions);
第六步、實現 Marker 的點擊事件響應;
利用 baidumap 對象的地圖監聽方法,實現針對 marker 的點擊響應,核心代碼如下:
//對 marker 添加點擊相應事件
baiduMap.setOnMarkerClickListener(new OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker arg0) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "Marker被點擊了!", Toast.LENGTH_SHORT).show();
return false;
}
});
第七步、利用 Button 控件,控制 Marker 的添加刪除;
這里用 button 來控制在地圖上添加 或者 刪除一個 marker,首先在 xml 中添加一個 button 控件:
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:text="刪除Marker" />
在 java 代碼中添加這個 button 的點擊事件響應,核心代碼如下:
//按鈕控制添加刪除 button
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if(button.getText() == "添加Marker")
{
marker = (Marker) baiduMap.addOverlay(markerOptions);
button.setText("刪除Marker");
}
else
{
marker.remove();
button.setText("添加Marker");
}
}
});
通過以上的操作,就可以實現相應的 marker 添加,marker 點擊響應,marker 刪除等操作。