0
当大量地址被转换为经纬度& lng时,有时结果为空。 我认为这个原因是使用这个URL太多,所以得到空值。 我该如何解决这个问题才能得到正确的经纬度& lng?有时候获得经纬度和纬度为空的谷歌地图api json
String transformerUrl = "http://maps.google.com/maps/api/geocode/json?address=%s&language=zh-TW&sensor=false®ion=tw";
private String readAll(Reader rd) throws IOException {
StringBuilder sb = new StringBuilder();
int cp;
while ((cp = rd.read()) != -1) {
sb.append((char) cp);
}
return sb.toString();
}
public String[] getLocationInfoByAddress(String address)
throws IOException, JSONException {
String[] latLngStr = new String[2];
String encodeAddress = URLEncoder.encode(address, "Utf-8");
String formatAddress = String.format(transformerUrl, encodeAddress);
InputStream is = new URL(formatAddress).openConnection().getInputStream();
try {
BufferedReader rd = new BufferedReader(new InputStreamReader(is,
Charset.forName("UTF-8")));
String jsonText = readAll(rd);
//System.out.println(jsonText);
try {
JSONArray arr = new JSONObject(jsonText)
.getJSONArray("results");
for (int i = 0; i < arr.length(); ++i) {
if (arr.getJSONObject(i).get("geometry") != null) {
Object lat = arr.getJSONObject(i).getJSONObject("geometry").getJSONObject("location").get("lat");
Object lng = arr.getJSONObject(i).getJSONObject("geometry").getJSONObject("location").get("lng") ;
latLngStr[0] = lat.toString();
latLngStr[1] = lng.toString();
break;
}
}
} catch (JSONException e) {
}
} finally {
is.close();
}
return latLngStr;
}
我得到了这个“OVER_QUERY_LIMIT”。所以任何解决方案来解决它?先谢谢你。 – WhiteBanana
看到我更新的答案 – geocodezip
谢谢!我会搜索一些关于油门请求的内容。我认为这是一个很酷的方式。 – WhiteBanana