根据地理位置获取经纬度

        String geodata = OkHttpUtils.builder().url("https://restapi.amap.com/v3/geocode/geo")
                // 有参数的话添加参数,可多个
                .addParam("key", GAODE_KEY)
                .addParam("address", name) //name为一个具体地址如重庆解放碑
                .addHeader("Content-Type", "application/json; charset=utf-8")
                .get()
                .sync();
        HashMap map = JSON.parseObject(geodata, HashMap.class);
        JSONArray geocodes = (JSONArray) map.get("geocodes");
        for (Object geocode : geocodes) {
            JSONObject geocode1 = (JSONObject) geocode;
            String location = String.valueOf(geocode1.get("location"));
            String[] split = location.split(",");//split[0],split[1]分别为经纬度
        }
采用字符串分割的方式进行简单测试发现能够较为精准的获得地理位置。

下图为测试代码,代码执行后会输出经度与纬度,如果需要经度,纬度的格式可以直

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 Android Studio 中,可以使用 Google Play Services 提供的 Location API 来获取经纬度。以下是获取用户当前位置经纬度的步骤: 1. 在 AndroidManifest.xml 文件中添加以下权限: ```xml <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> ``` 2. 在 build.gradle(Module:app) 文件中添加以下依赖: ```gradle implementation 'com.google.android.gms:play-services-location:18.0.0' ``` 3. 在代码中添加以下代码: ```java // 创建LocationManager对象 LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); // 判断是否有权限获取位置信息 if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { // 请求获取位置信息的权限 ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, 1); return; } // 获取位置提供器名称,GPS或是NetWork 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); // 获取LocationProvider // 获取位置信息 Location location = locationManager.getLastKnownLocation(provider); if (location != null) { double latitude = location.getLatitude(); // 获取纬度 double longitude = location.getLongitude(); // 获取经度 Log.d("TAG", "latitude: " + latitude); Log.d("TAG", "longitude: " + longitude); } ``` 注意:需要在 Android 手机上打开定位功能才能获取位置信息。如果获取不到位置信息,可以尝试在设置中打开定位服务。同时,获取位置信息可能会比较耗时,建议在子线程中执行,避免阻塞主线程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值