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


 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);  

                  
  /**
* 給地圖上添加文字
*/
//定義文字所顯示的坐標點
LatLng llText = new LatLng(latitude, longitude);
//構建文字Option對象,用於在地圖上添加文字
OverlayOptions textOption = new TextOptions()
// .bgColor(0xAAFFFF00)
.fontSize(16)
.fontColor(Color.BLACK)
.text(addrStr)

// .rotate(-30)
.position(llText);
//在地圖上添加該文字對象並顯示

mBaiduMap.addOverlay(textOption);
} @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(); } 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM