我正在制作一个Android应用程序,根据他的纬度和纵向位置确定用户的位置。所以我使用的是Google Maps reverse geocoder
。但问题是Google表示每天只能拨打2500个API。但是我希望我的用户数量远远超过2500.那么有Google Maps reverse geocoder
的替代方案可以让每天进行无限制的API调用吗?
答案 0 :(得分:4)
每个用户的数量是2500(我认为每个IP)。如果您不想进行自动查询(违反政策)2500对于单个用户来说应该足够了。
“由于地理编码限制是针对每个用户的会话,因此随着用户群的增长,您的应用程序不会有达到全局限制的风险。”
“2,500个请求限制是每个IP地址。”
这
https://developers.google.com/maps/articles/geocodestrat#client
答案 1 :(得分: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;
}
答案 2 :(得分:2)