根据城市名获得城市中心的经纬度

    方法一:
    /**
     * 根据选择的城市获取对应的经纬度
     * @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()+"");
            //获取反向地理编码结果
        }
    };
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chailongger

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值