百度地图定位比google地图快多了

mLocationClient = new LocationClient(this);     //声明LocationClient类
	    LocationClientOption option = new LocationClientOption();
	    option.setOpenGps(true);
	    option.setAddrType("detail");
	    option.setCoorType("gcj02");
	    option.setScanSpan(1000);
	    option.disableCache(true);//禁止启用缓存定位
	    option.setPoiNumber(5);	//最多返回POI个数	
	    option.setPoiDistance(1000); //poi查询距离		
	    option.setPoiExtraInfo(true); //是否需要POI的电话和地址等详细信息		
	    mLocationClient.setLocOption(option);
	    mLocationClient.start();
	    //if (mLocationClient != null && mLocationClient.isStarted())
	    	mLocationClient.requestLocation();
	    	
	    mLocationClient.registerLocationListener(new BDLocationListener(){

			@Override
			public void onReceiveLocation(BDLocation location) {
				// TODO Auto-generated method stub
				if (location == null)
					return ;
				successfullyLocated=true;
				longitude=location.getLongitude();
				latitude=location.getLatitude();
				tv_longitude.setText("当前位置:"+location.getAddrStr());
				mLocationClient.stop();
			}

			@Override
			public void onReceivePoi(BDLocation arg0) {
				// TODO Auto-generated method stub
				
			}
	    	
	    });

以上是百度地图的方法,不需要跳到设置里打开GPS,定位速度快。百度地图API:http://openapi.baidu.com/map/geosdk-android-classv2.6.htm#LocationClient.E7.B1.BB





private boolean openGPS(){locationManager=(LocationManager) getSystemService(Context.LOCATION_SERVICE);//locationManager.setTestProviderEnabled("gps", true);boolean GPS_status = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); //boolean NETWORK_status = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);if(!GPS_status){ Toast.makeText(Search.this, "如需要更精确的定位,请打开GPS卫星定位并保证抬头可见天空", Toast.LENGTH_SHORT).show(); //转到手机设置界面,用户设置GPS Intent intent=new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivityForResult(intent,0); //设置完成后返回到原来的界面 return false;} return true;}private boolean getLocation(){ boolean GPS_status = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);//获得手机是不是设置了GPS开启状态true:gps开启,false:GPS未开启 boolean NETWORK_status = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);//另一种Gpsprovider(Google网路地图)Criteria criteria = new Criteria();criteria.setAccuracy(Criteria.ACCURACY_FINE);criteria.setAltitudeRequired(false);criteria.setBearingRequired(false);criteria.setCostAllowed(true);criteria.setPowerRequirement(Criteria.POWER_LOW);String provider = locationManager.getBestProvider(criteria, true);//String provider = "gps";if(provider==null){tv_longitude.setText("无法获取当前位置,请将搜索半径设为无限制!");return false;}Location location = locationManager.getLastKnownLocation(provider);if(location==null){tv_longitude.setText("正在定位中,请稍后...");}loclistener=new LocationListener(){@Overridepublic void onLocationChanged(Location location) {// TODO Auto-generated method stublongitude=location.getLongitude();latitude=location.getLatitude();successfullyLocated=true;mButton.setClickable(true);mSpinner.setSelection(radiuslist.size()-1);Geocoder geocoder = new Geocoder(getBaseContext(), Locale.CHINESE);try {List<Address> address=geocoder.getFromLocation(latitude, longitude, 1);tv_longitude.setText(address.get(0).toString());} catch (IOException e) {// TODO Auto-generated catch blocktv_longitude.setText("定位成功,请选择查找半径");e.printStackTrace();}locationManager.removeUpdates(loclistener); }@Overridepublic void onProviderDisabled(String provider) {// TODO Auto-generated method stub}@Overridepublic void onProviderEnabled(String provider) {// TODO Auto-generated method stub}@Overridepublic void onStatusChanged(String provider, int status,Bundle extras) {// TODO Auto-generated method stub}}; locationManager.requestLocationUpdates(provider, 1000, 1, loclistener);return true;}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值