1

我正在测试一个应用程序,它借助三星平板电脑中的 GPS 获取纬度和经度。我能够从 GPS 单元捕获当前的纬度、经度。现在我想使用经纬度从这些位置获取地址,而不使用互联网,即 wi-fi、移动数据。

我正在按照以下方式进行操作:

public  String getAddress(Context ctx, double latitude, double longitude) {
        StringBuilder result = new StringBuilder();
        try {
            Geocoder geocoder = new Geocoder(ctx, Locale.getDefault());
            List<Address> addresses = geocoder.getFromLocation(latitude, longitude, 1);
            if (addresses.size() > 0) {
                Address address = addresses.get(0);

                String locality=address.getLocality();
                String city=address.getCountryName();
                String region_code=address.getCountryCode();
                String zipcode=address.getPostalCode();
                double lat =address.getLatitude();
                double lon= address.getLongitude();

                result.append(locality+" ");
                result.append(city+" "+ region_code+" ");
                result.append(zipcode);

            }
        } catch (IOException e) {
            Log.e("tag", e.getMessage());
        }

        return result.toString();
    }

    private class GetCurrentAddress extends AsyncTask<String, Void, String> {

        @Override
        protected String doInBackground(String... urls) {
    // this lat and log we can get from current location but here we given hard coded
            double latitude=12.916523125961666;
            double longitude=77.61959824603072;

        String address= getAddress(context, latitude, longitude);
            return address;
        }

        @Override
        protected void onPostExecute(String resultString) {
            dialog.dismiss();
            result.setText(resultString);

        }
    }  

在 mainfest 我做以下条目:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
4

3 回答 3

3

这是不可能的,因为 GeoCoder 需要依赖互联网的外部服务。

于 2014-01-07T07:29:55.223 回答
3

在没有互联网的情况下无法从 Lat Lang 获取地址,因为谷歌也进行地理编码

     Geocoder geocoder = new Geocoder(ctx, Locale.getDefault());
        List<Address> addresses = geocoder.getFromLocation(latitude, longitude, 1);

此 getFromLocation() 方法应在 asynTask 中运行并通过互联网运行,然后它会给出所需的结果。

    <uses-permission android:name="android.permission.INTERNET" />

上网权限也需要

于 2014-01-07T08:56:59.383 回答
0

是的,如果您只需要使用 GPS 获取用户的纬度/经度,这是可能的。

当考虑到地理编码的任何情况时,您将需要网络连接才能访问 Google API。

希望它能满足您的查询!

于 2014-01-07T07:33:12.863 回答