百度地图开发之定位以及反地理编码获取周围地理位置

百度地图定位 + 反地理编码

一.百度地图定位


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

       	 });}


效果图百度地图开发之定位以及反地理编码获取周围地理位置_第1张图片



源码下载

你可能感兴趣的:(Android)