Android百度地圖開發實現點擊地圖添加Marker並獲取地址信息

概述:

使用前下載最新的庫文件,將locSDK6.X.so文件拷貝到jniLibs/armeabi目錄下(Android Studio),及locSDK6.X.jar文件拷貝到工程的libs目錄下
java

BaiduMap.OnMapClickListener   地圖單擊事件監聽接口 android

GeoCoder   地理編碼查詢接口 git

reverseGeoCode(ReverseGeoCodeOption option)   發起反地理編碼請求(經緯度->地址信息)
setOnGetGeoCodeResultListener(OnGetGeoCoderResultListener listener)   設置查詢結果監聽者

api

1.首先在佈局文件添加mapview

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:top="http://schemas.android.com/apk/res-auto" 
    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>

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(); 
    } 
}
相關文章
相關標籤/搜索