在下面的代码中,“results”,“geometry”,“location”,“lat”和“lng”是硬编码的。
问题是,如果Google更改了其中的一些字词,我的代码将无法使用。所以我的问题是:谷歌地图API或JSON库中是否有方法可以解决我的问题?
private Location getCoordinates(Location l, JSONObject json) {
try {
JSONArray jsonObject1 = (JSONArray) json.get("results");
JSONObject jsonObject2 = (JSONObject)jsonObject1.get(0);
JSONObject jsonObject3 = (JSONObject)jsonObject2.get("geometry");
JSONObject location = (JSONObject) jsonObject3.get("location");
l.setLat(Double.parseDouble(location.get("lat").toString()));
l.setLon(Double.parseDouble(location.get("lng").toString()));
return l;
} catch (Exception e) {
throw new IllegalArgumentException("Country or zip not found.");
}
}
答案 0 :(得分:1)
您可以使用Google client lib。然后你可能得到这样的坐标。
GeoApiContext context = new GeoApiContext().setApiKey("API_KEY");
GeocodingResult[] results = GeocodingApi.geocode(context,
"1600 Amphitheatre Parkway Mountain View, CA 94043").await();
for (GeocodingResult result : results) {
System.out.println("LAT: " + result.geometry.location.lat);
System.out.println("LNG: " + result.geometry.location.lng);
}