百度地圖開發之定位以及反地理編碼獲取周圍地理位置

百度地圖定位 + 反地理編碼

一.百度地圖定位


1.百度定位配置代碼



LocationClientOption option = new LocationClientOption();
option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//設置定位模式
option.setOpenGps(true);// 打開gps:默認不打開
option.setCoorType("bd09ll");//返回的定位結果是百度經緯度,默認值gcj02
option.setScanSpan(5000);//設置發起定位請求的間隔時間爲5000ms
option.setIsNeedAddress(true);//返回的定位結果包含地址信息
locationClient = new LocationClient(this);
locationClient.setLocOption(option);
locationClient.registerLocationListener(new ScenesLocationListener());(此處實現BDLocationListener,可以拿到經緯度)


2.通過改變地圖的位置,獲取到地圖的中心點經緯度


map.setOnMapStatusChangeListener(new BaiduMap.OnMapStatusChangeListener() {
           			 @Override
            			public void onMapStatusChangeStart(MapStatus mapStatus) {
               				 LatLng ptCenter = map.getMapStatus().target;
              			 	 setPopupTipsInfo(ptCenter);
           			 }
            			 @Override
          		 	 public void onMapStatusChange(MapStatus mapStatus) {

        		    }

           			 @Override
          		 	 public void onMapStatusChangeFinish(MapStatus mapStatus) {
	
           			 }
       			 });

3.通過反地理編碼拿到PoiList


geoCoder.setOnGetGeoCodeResultListener(new OnGetGeoCoderResultListener() {

           @Override
           public void onGetGeoCodeResult(GeoCodeResult geoCodeResult) {
           	if (geoCodeResult == null || geoCodeResult.error != earchResult.ERRORNO.NO_ERROR) {
                     Toast.makeText(SelectLocationActivity.this, "未找到地址", Toast.LENGTH_SHORT).show();
                     return;
            	   }
             	LatLng lat = new LatLng(geoCodeResult.getLocation().latitude,
                                        geoCodeResult.getLocation().longitude);
                         geoCoder.reverseGeoCode(new ReverseGeoCodeOption().location(lat));
               		 MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(lat);
               		 map.clear();
               		 map.animateMapStatus(u);
         	    }		

           	@Override
           	public void onGetReverseGeoCodeResult(ReverseGeoCodeResult reverseGeoCodeResult) {
             	    if (reverseGeoCodeResult == null || reverseGeoCodeResult.error != SearchResult.ERRORNO.NO_ERROR) {
               		    Toast.makeText(this,"未找到地址", Toast.LENGTH_SHORT).show();
              		} else {
               		    datas.clear();
               		    List<PoiInfo> poiList = reverseGeoCodeResult.getPoiList();
                  	    selectLat = reverseGeoCodeResult.getLocation().latitude;
                  	    selectLon = reverseGeoCodeResult.getLocation().longitude;
                    	    if (poiList != null && poiList.size() > 0) {
                                 for (int i = 0; i < poiList.size(); i++) {
                                  datas.add(poiList.get(i).name);
                             }
                         }
                  	  adapter.notifyDataSetChanged();
             	   }        

       	 });}


效果圖



源碼下載

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章