2

我正在制作一个 android 应用程序,它根据用户的纬度和经度位置确定用户的位置。所以我正在使用Google Maps reverse geocoder. 但问题是谷歌表示每天只能进行 2500 次 API 调用。但我希望我的用户数量超过 2500。那么有没有一种替代方法Google Maps reverse geocoder可以让用户每天进行无限制的 API 调用?

4

3 回答 3

4

数字 2500 是每个用户(我认为每个 IP)。如果您不想执行自动查询(违反政策),2500 对于单个用户来说应该绰绰有余。

“由于地理编码限制是针对每个用户会话的,因此随着用户群的增长,您的应用程序不会达到全局限制。”

“每个 IP 地址的 2,500 个请求限制。”

https://developers.google.com/maps/articles/geocodestrat#client

于 2013-05-12T09:07:38.927 回答
3

您可以通过 Google API 使用,例如使用参数插入经度和纬度,并将请求发送到服务器和服务器,并提供地址响应。

public static String  getAddressUrl(Context context) {
    String responseText = null;
    // String latitude = "38.89";
    // String longitude  = "-77.03";
    String googleurl = "http://maps.google.com/maps/geo?";
    Log.v(TAG , "Latitude is: " + latitude + "Longitude is:" + longitude);
    StringBuilder sbuilder = new StringBuilder();
    sbuilder.append(googleurl);

    sbuilder.append("q = " + latitude + "," + longitude);
    sbuilder.append("&output = responseText&sensor = true");
    String url = sbuilder.toString();

    Log.v(TAG, "url is: " + url);
    try {
        DefaultHttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(url);
        HttpResponse httpresponse = httpclient.execute(httppost);
        HttpEntity httpentity = httpresponse.getEntity();
        InputStream is = httpentity.getContent();
        BufferedReader reader = new BufferedReader(
            new InputStreamReader(is, "iso-8859-1"), 8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
        is.close();
        responseText = sb.toString();
    }
    catch(ClientProtocolException e) {
        e.printStackTrace();
    }
    catch (IOException e) {
        e.printStackTrace();
    }
    return responseText;
}
于 2013-05-12T07:50:09.680 回答
2

Android 的地理编码器是我的选择。您应该更具体地将地址转换为 long-lat。这是一个例子

于 2013-05-12T07:22:28.303 回答