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;}
百度地图定位比google地图快多了
最新推荐文章于 2019-02-28 23:17:20 发布