android - 如何通过计算的经纬度获取位置

标签 android location

我计算了当前地点的经纬度。我现在想要的是获取那个地方的位置。这是我计算经度和纬度的 java 代码。我已经在 list 代码中获得了许可,我不包括在这个 java 代码中。

    locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
    locationListener = new LocationListener() {
        @Override
        public void onLocationChanged(Location location) {
            textView.append("\n " + location.getAltitude() + " " + location.getLongitude());
        }

        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {

        }

        @Override
        public void onProviderEnabled(String provider) {

        }

        @Override
        public void onProviderDisabled(String provider) {
            Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
            startActivity(intent);
        }
    };

    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        requestPermissions(new String[]{
                Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION,
                Manifest.permission.INTERNET
        }, 10);
        return;
    } else {
        configureButton();
    }
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    switch (requestCode) {
        case 10:
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
                configureButton();
            return;
    }
}

private void configureButton() {
    button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            locationManager.requestLocationUpdates("gps", 5000, 0, locationListener);
        }
    });
}

最佳答案

Geocoder geocoder = new Geocoder(context, Locale.getDefault());
String result = null;
try {
        List<Address> addressList = geocoder.getFromLocation(
        latitude, longitude, 1); //use your lat, long value here

        if (addressList != null && addressList.size() > 0) {
            Address address = addressList.get(0);
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < address.getMaxAddressLineIndex(); i++){
                sb.append(address.getAddressLine(i)).append("\n");
            }
            sb.append(address.getLocality()).append("\n");
            sb.append(address.getPostalCode()).append("\n");
            sb.append(address.getCountryName());
            result = sb.toString();
            }
    } catch (IOException e) {
        Log.e(TAG, "Unable connect to Geocoder", e);
}

更多引用:

关于android - 如何通过计算的经纬度获取位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39739788/

相关文章:

android - 在 BackPressed 上恢复之前的 Activity

android - arm64-v8a 是否与 armeabi-v7a 兼容?

android - 在某个位置附近生成通知

c++ - 在 OpenCV/C++ 中通过(扩展)卡尔曼滤波器实现数据融合

ios - 苹果审查被拒绝,因为获取用户权限对话框已本地化

android - 如何检查是否启用了定位服务?

MySQL 8.0数据分离部署

java - 异步任务下载的进度条

android - 无法从外部 gradle 文件中获取未知属性

java - DynamoDB 在 map 中存储/映射复杂对象