方法一: /** * 根据选择的城市获取对应的经纬度 * @param cityname */ public void dataRequest(String cityname){ String url; JSONObject jsonObject = null; JsonObjectRequestWithCookie jsonRequest = null; String result = null; try { result = new String(cityname.getBytes("UTF-8"), "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } url = "http://api.map.baidu.com/geocoding/v3/?region=" +cityname+ "&output=json" + "&ak=xxxxxxxx" ; // "&callback=showLocation"; jsonRequest = new JsonObjectRequestWithCookie(url,jsonObject, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject obj) { Logs.i(obj.toString()); Logs.i("返回结果"); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Logs.i("error "+error.networkResponse.statusCode); } },null,1); if(jsonRequest != null){ jsonRequest.setRetryPolicy( new DefaultRetryPolicy( 500000,//默认超时时间 DefaultRetryPolicy.DEFAULT_MAX_RETRIES,//默认最大尝试次数 DefaultRetryPolicy.DEFAULT_BACKOFF_MULT ) ); if(RequestManager.Cookie != ""){ jsonRequest.setSendCookie(RequestManager.Cookie); } RequestQueueManager.getRequestQueue().add(jsonRequest); }else { Logs.i("网络请求初始化失败"); } }
方法二:
//请求定位权限 public void requestLocationPermission(){ if(ContextCompat.checkSelfPermission(HomeActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){//未开启定位权限 //开启定位权限,200是标识码 ActivityCompat.requestPermissions(HomeActivity.this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION},200); }else{ getlocationGps();//开始定位 Toast.makeText(HomeActivity.this,"已开启定位权限",Toast.LENGTH_LONG).show(); } }
private void getlocationGps() { // 1.获取位置管理器 locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); // 2.获取网络状态 if (getNetWorkState(this) == NETWORK_NONE) { Log.d(TAG, "当前是GPS定位"); statusListener = new GpsStatus.Listener() { @Override public void onGpsStatusChanged(int event) { // 需要检查权限,否则编译报错 if (Build.VERSION.SDK_INT >= 23 && ActivityCompat.checkSelfPermission(HomeActivity.this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(HomeActivity.this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { return; } if (ActivityCompat.checkSelfPermission(HomeActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(HomeActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { return; } gpsStatus = locationManager.getGpsStatus(null); switch (event) { case GpsStatus.GPS_EVENT_STARTED: Log.d(TAG, "GPS系统已开始工作"); break; case GpsStatus.GPS_EVENT_STOPPED: Log.d(TAG, "GPS系统已停止工作"); break; default: break; } } }; locationManager.addGpsStatusListener(statusListener); // 监视地理位置变化,第二个和第三个参数分别为更新的最短时间minTime(单位为毫秒)和最短距离minDistace(单位为米) locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 0, locationListener); } else { Log.d(TAG, "当前是网络定位"); // 监视地理位置变化,第二个和第三个参数分别为更新的最短时间minTime(单位为毫秒)和最短距离minDistace(单位为米) locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 3000, 0, locationListener); } }
// 创建地理编码检索 输入城市名 返回经纬度 OnGetGeoCoderResultListener listener = new OnGetGeoCoderResultListener() { public void onGetGeoCodeResult(GeoCodeResult result) { Log.w("----ERRORNO---", result.error + ""); if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) { Toast.makeText(getApplication(), "抱歉,未能找到结果", Toast.LENGTH_LONG) .show(); return; } // Log.w("----1111---",result.getLocation().latitude+""); Logs.i(result.getLocation().latitude + ""); Logs.i(result.getLocation().longitude + ""); //获取地理编码结果 } @Override public void onGetReverseGeoCodeResult(ReverseGeoCodeResult result) { if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) { Toast.makeText(getApplication(), "抱歉,未能找到结果", Toast.LENGTH_LONG) .show(); return; } // Log.w("----1111---",result.getAddress()+""); //获取反向地理编码结果 } };