Android百度地圖開發實現點擊地圖添加Marker并獲取地址信息
概述:
使用前下載最新的庫文件,將liblocSDK4.so文件拷貝到libs/armeabi目錄下,及locSDK4.0.jar文件拷貝到工程的libs目錄下
BaiduMap.OnMapClickListener 地圖單擊事件監聽接口
GeoCoder 地理編碼查詢接口
reverseGeoCode(ReverseGeoCodeOption option) 發起反地理編碼請求(經緯度->地址信息)
setOnGetGeoCodeResultListener(OnGetGeoCoderResultListener listener) 設置查詢結果監聽者
setOnGetGeoCodeResultListener(OnGetGeoCoderResultListener listener) 設置查詢結果監聽者
1.首先在布局文件添加mapview
<LinearLayout xmlns:android=" xmlns:top=" android:layout_width="match_parent"
android:layout_height="match_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></pre>
2.MainActivity里添加使用
public class MapActivity extends Activity {
private MapView mMapView = null;
private BaiduMap mBaiduMap;
private BitmapDescriptor bitmap;
private String address= "";@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 在使用SDK各組件之前初始化context信息,傳入ApplicationContext // 注意該方法要再setContentView方法之前實現 SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_map); // 獲取地圖控件引用 mMapView = (MapView) findViewById(R.id.bmapView); mBaiduMap = mMapView.getMap(); //設置是否顯示比例尺控件 mMapView.showScaleControl(false); //設置是否顯示縮放控件 mMapView.showZoomControls(false); // 刪除百度地圖LoGo mMapView.removeViewAt(1); // 設置marker圖標 bitmap = BitmapDescriptorFactory.fromResource(R.drawable.maker); mBaiduMap.setOnMapClickListener(new OnMapClickListener() { @Override public boolean onMapPoiClick(MapPoi arg0) { // TODO Auto-generated method stub return false; } //此方法就是點擊地圖監聽 @Override public void onMapClick(LatLng latLng) { //獲取經緯度 double latitude = latLng.latitude; double longitude = latLng.longitude; System.out.println("latitude=" + latitude + ",longitude=" + longitude); //先清除圖層 mBaiduMap.clear(); // 定義Maker坐標點 LatLng point = new LatLng(latitude, longitude); // 構建MarkerOption,用于在地圖上添加Marker MarkerOptions options = new MarkerOptions().position(point) .icon(bitmap); // 在地圖上添加Marker,并顯示 mBaiduMap.addOverlay(options); //實例化一個地理編碼查詢對象 GeoCoder geoCoder = GeoCoder.newInstance(); //設置反地理編碼位置坐標 ReverseGeoCodeOption op = new ReverseGeoCodeOption(); op.location(latLng); //發起反地理編碼請求(經緯度->地址信息) geoCoder.reverseGeoCode(op); geoCoder.setOnGetGeoCodeResultListener(new OnGetGeoCoderResultListener() { @Override public void onGetReverseGeoCodeResult(ReverseGeoCodeResult arg0) { //獲取點擊的坐標地址 address = arg0.getAddress(); System.out.println("address="+address); } @Override public void onGetGeoCodeResult(GeoCodeResult arg0) { } }); } }); } @Override protected void onDestroy() { super.onDestroy(); // 在activity執行onDestroy時執行mMapView.onDestroy(),實現地圖生命周期管理 mMapView.onDestroy(); } @Override protected void onResume() { super.onResume(); // 在activity執行onResume時執行mMapView. onResume (),實現地圖生命周期管理 mMapView.onResume(); } @Override protected void onPause() { super.onPause(); // 在activity執行onPause時執行mMapView. onPause (),實現地圖生命周期管理 mMapView.onPause(); } } </pre><br />
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!