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

jopen 9年前發布 | 196K 次閱讀 Android Android開發 移動開發

概述:

使用前下載最新的庫文件,將liblocSDK4.so文件拷貝到libs/armeabi目錄下,及locSDK4.0.jar文件拷貝到工程的libs目錄下


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

GeoCoder   地理編碼查詢接口 

reverseGeoCode(ReverseGeoCodeOption option)   發起反地理編碼請求(經緯度->地址信息)
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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!