android - Reverse GeoCoordinate Class 给出 Location Not found 错误

标签 android api google-maps google-maps-api-3 reverse-geocoding

我在我的应用程序中使用谷歌反向地理编码 API,我成功地能够使用谷歌地理定位 API 获取坐标。现在我试图从反向地理编码 API 获取位置名称,但总是返回位置未找到错误

这是我的代码:

  Geocoder geocoder= new Geocoder(MainActivity.this, Locale.ENGLISH);
    

  if(geocoder.isPresent()){
          List<Address> list;
	try {
			list = geocoder.getFromLocation(37.42279, -122.08506,1);
			 Address address = list.get(0);
			 Log.d("this is working","thsi sis working");

	         StringBuffer str = new StringBuffer();
	         str.append("Name: " + address.getLocality() + "\n");
	         str.append("Sub-Admin Ares: " + address.getSubAdminArea() + "\n");
	         str.append("Admin Area: " + address.getAdminArea() + "\n");
	         str.append("Country: " + address.getCountryName() + "\n");
	         str.append("Country Code: " + address.getCountryCode() + "\n");;

	         String strAddress = str.toString();
	         JsonDatas.setText(strAddress);
	          Log.d("Address", strAddress);
		} 
    catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

我有几个问题

  1. Google 如何知道哪个应用请求了 API 以及 Google 如何确定该应用的配额。在谷歌 API 开发者控制台中,谷歌为应用程序 API 提供了配额
  2. 为什么我收到“找不到位置”错误,但显示在谷歌地图上搜索的位置
  3. 我是否需要将 google Geocoder APi key 添加到我的应用程序中 - 现在我只是用于检索坐标的 Geolocation API key

如果我错了,请纠正我,请提出建议,这样我的代码才能正常工作

谢谢

最佳答案

确保您的项目中有最新的 Google Play 库。我正在使用此代码并为我工作。

 private class ReverseGeocodingTask extends AsyncTask<LatLng, Void, String> {
        Context mContext;

        public ReverseGeocodingTask(Context context) {
            super();
            mContext = context;
        }

        // Finding address using reverse geocoding
        @Override
        protected String doInBackground(LatLng... params) {
            Geocoder geocoder = new Geocoder(mContext);
            double latitude = params[0].latitude;
            double longitude = params[0].longitude;
            List<Address> addresses = null;
            String addressText = "";

            try {

                addresses = geocoder.getFromLocation(latitude, longitude, 1);

                Thread.sleep(500);

                if (addresses != null && addresses.size() > 0) {

                    Address address = addresses.get(0);

                    addressText = String.format(
                            "%s",
                            address.getMaxAddressLineIndex() > 0 ? address
                                    .getAddressLine(1) : "", "", "");
                }
            } catch (IOException e) {
                e.printStackTrace();

            } catch (InterruptedException e) {
                e.printStackTrace();
            }

            return addressText;
        }

        @Override
        protected void onPostExecute(String addressText) {
        }
}

LatLng 是纬度和经度,检查 this对于文档。

并使用写下 new ReverseGeocodingTask(this).execute(latlng); 您想要获取数据的位置。

确保您在 list 文件中添加权限。

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

关于android - Reverse GeoCoordinate Class 给出 Location Not found 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30928899/

相关文章:

Java Restful web服务方法消费MultiPart数据抛异常

android - 在android中以编程方式连接wpa2企业wifi连接

ios - 如何在iOS应用程序中授权whatsapp?

api - 如何使用 Twitter API(2022 年)获取 Twitter 关注者数量?

java - 如何通过 Java API for KML 使用地标 ID 从文件夹中删除 KML 地标?

Android Google Maps v2 - 缩放后的灰色瓷砖

android - android中的静态变量生命周期

java - 打电话 Intent 不起作用 - 小米手机

swift - Google Maps iOS 不允许自定义 map 标记图像

javascript - 将鼠标悬停在圆形、多边形或矩形上