Android定位获得经纬度(手机位置服务和百度定位)
2014-12-23 16:28
477 查看
private double latitude = 0.0; private double longitude = 0.0; <span style="white-space:pre"> </span>//利用手机位置服务定位 void getLoaction() { final LocationManager locationManager = (LocationManager) getActivity() .getSystemService(Context.LOCATION_SERVICE); //创建一个criteria对象 Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_COARSE); //设置不需要获取海拔方向数据 criteria.setAltitudeRequired(false); criteria.setBearingRequired(false); //设置允许产生资费 criteria.setCostAllowed(true); //要求低耗电 criteria.setPowerRequirement(Criteria.POWER_LOW); String provider = locationManager.getBestProvider(criteria, false); Log.i(TAG, "we choose "+ provider); Location location = locationManager.getLastKnownLocation(provider); //第一次获得设备的位置 updateLocation(location); //重要函数,监听数据测试 locationManager.requestLocationUpdates(provider, 6000, 10, locationListener); } //创建一个事件监听器 private final LocationListener locationListener = new LocationListener() { public void onLocationChanged(Location location) { updateLocation(location); } public void onProviderDisabled(String provider) { updateLocation(null); Log.i(TAG, "Provider now is disabled.."); } public void onProviderEnabled(String provider) { Log.i(TAG, "Provider now is enabled.."); } public void onStatusChanged(String provider, int status, Bundle extras) { } }; //获取用户位置的函数,利用Log显示 private void updateLocation(Location location) { Log.i(TAG, "updateLocation"); if (location != null) { latitude = location.getLatitude(); longitude = location.getLongitude(); String oldLocation = MainUIActivity.mApplication.getLocation(); String newLocation = longitude + "," + latitude; mCurCommunityPoint.setText(newLocation); newLocation = Utils.bd_encrypt(latitude, longitude); Log.i(TAG, "The location has changed.. " + newLocation); if (!newLocation.equals(oldLocation)) { mCurPageIndex = 1; mHandler.obtainMessage(GET_COMMUNITY_DATA, newLocation).sendToTarget(); } } } //百度位置服务,百度定位sdk下载地址:http://developer.baidu.com/map/index.php?title=android-locsdk/guide/v5-0 void getBaiduLoaction(){ LocationClient mLocationClient = new LocationClient(getActivity()); mLocationClient.registerLocationListener( new BDLocationListener() { @Override public void onReceiveLocation(BDLocation location) { onLocationChanged(location); } } ); //注册监听函数 LocationClientOption option = new LocationClientOption(); option.setLocationMode(LocationMode.Hight_Accuracy);//设置定位模式 option.setCoorType("gcj02");//返回的定位结果是百度经纬度,默认值gcj02 option.setScanSpan(5000);//设置发起定位请求的间隔时间为5000ms option.setIsNeedAddress(true);//返回的定位结果包含地址信息 option.setNeedDeviceDirect(true);//返回的定位结果包含手机机头的方向 mLocationClient.setLocOption(option); mLocationClient.start(); } /** * 当位置发生变化时触发此方法 * * @param location 当前位置 */ public void onLocationChanged(BDLocation location) { if (location != null) { // 显示定位结果 Log.d(TAG, location.getLongitude() + " " + location.getLatitude()); latitude = location.getLatitude(); longitude = location.getLongitude(); String oldLocation = MainUIActivity.mApplication.getLocation(); String newLocation = longitude + "," + latitude; mCurCommunityPoint.setText(newLocation); newLocation = Utils.bd_encrypt(latitude, longitude); Log.i(TAG, "The location has changed.. " + newLocation); if (!newLocation.equals(oldLocation)) { mCurPageIndex = 1; mHandler.obtainMessage(GET_COMMUNITY_DATA, newLocation).sendToTarget(); } } }
从准确度来说百度还是比较靠谱的。
相关文章推荐
- 百度Android定位SDK实现获取当前经纬度及位置
- 百度Android定位SDK实现获取当前经纬度及位置
- Android位置服务--百度定位,获取自己的位置
- Android 百度定位获得当前具体位置
- 【Android】18.2 利用百度定位服务API实现位置跟踪
- (转载)百度Android定位SDK实现获取当前经纬度及位置
- (android地图开发) 基于百度Lbs服务定位用户的当前位置
- android通过高德地图定位sdk获取当前位置的经纬度(只是经纬度哦)
- Android Map Api 使用和开发(2) 定位我的位置、地图弹出泡泡、通过经纬度获取地址
- Android 如何获取手机经纬度和地理位置信息
- 百度定位SDK:弥补Android手机基站WI-FI定位缺失
- Android Map Api 使用和开发(2) 定位我的位置、地图弹出泡泡、通过经纬度获取地址
- 转载 Android Map Api 使用和开发 定位我的位置、地图弹出泡泡、通过经纬度获取地址 浮动搜索框 ,通过地址名称获取经纬度和详细地址并定位
- Android Map Api 使用和开发(2) 定位我的位置、地图弹出泡泡、通过经纬度获取地址
- Android - 位置定位(Location)服务(Service)类的基本操作
- Android使用百度LBS定位服务
- Android Map Api 使用和开发(2) 定位我的位置、地图弹出泡泡、通过经纬度获取地址
- 百度定位SDK实现获取当前经纬度及位置
- 用手机gps定位获得准确的百度地图经纬度
- 根据两个经纬度点调用百度地图应用查询路线 适用android或者ios中及网页浏览(手机网页同样适用)