在Geocoder旁边解释用户位置的最佳方法是什么

时间:2011-06-29 09:24:37

标签: android reverse-geocoding google-geocoder

所以我创建了一个访问用户位置的应用程序,然后使用Geocoder解释(反向地理编码),如下所示:

Geocoder gc = new Geocoder(ctx, Locale.getDefault());
List<Address> addresses = gc.getFromLocation(latitude, longitude, maxResults); 
Address address = addresses.get(0);
town = address.getLocality();
countryCd = address.getCountryCode();

但是我发现地理编码器服务真的不可靠,IOException和服务经常不可用。

我已经阅读了涉及向地理编码服务发送垃圾邮件的解决方案,直到它给出了结果,而其他人则表示该服务每15秒只允许每个IP地址一次点击。

有时重启设备会使服务再次可用。

该主题是否有其他API或方法?

3 个答案:

答案 0 :(得分:0)

那里有一个解决方案: android problem to get latitude & longitude from a given address

  

仅举一个替代方案,您可以使用Google地图的REST   基于reverse geocoder。您可以将此作为后备使用。如   你也会在你的应用程序中使用Google地图,你应该很好   使用API​​规则。

答案 1 :(得分:-1)

public void getAddress(double lat, double lng) {
    Geocoder geocoder = new Geocoder(this, Locale.getDefault());
    try {
        List<Address> addresses = geocoder.getFromLocation(lat, lng, 1);
        Address obj = addresses.get(0);
        String add = obj.getAddressLine(0);
        GUIStatics.currentAddress = obj.getSubAdminArea() + ","
                + obj.getAdminArea();
        GUIStatics.latitude = obj.getLatitude();
        GUIStatics.longitude = obj.getLongitude();
        GUIStatics.currentCity= obj.getSubAdminArea();
        GUIStatics.currentState= obj.getAdminArea();
        add = add + "\n" + obj.getCountryName();
        add = add + "\n" + obj.getCountryCode();
        add = add + "\n" + obj.getAdminArea();
        add = add + "\n" + obj.getPostalCode();
        add = add + "\n" + obj.getSubAdminArea();
        add = add + "\n" + obj.getLocality();
        add = add + "\n" + obj.getSubThoroughfare();

        Log.v("IGA", "Address" + add);
        // Toast.makeText(this, "Address=>" + add,
        // Toast.LENGTH_SHORT).show();

        // TennisAppActivity.showDialog(add);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
    }
}

使用它可能对你有帮助。

答案 2 :(得分:-1)

由于您的实施,您可能会收到IOException和Service Unavailable。

阅读此最佳做法:http://android-developers.blogspot.com/2011/06/deep-dive-into-location.html

(它比API更好)和开源!