问候,
我只是想问一下,Google Map Api 密钥第 2 版是否有任何方法或类,我可以通过派生的纬度和经度获取当前位置(在地址中)。在 Google Map Api 版本 1 中有类 Geocoder,我们可以使用它来将纬度和经度更改为地址。但我认为我们不能在 Api v2 中使用 Geocoder 类,因为它使用 Fragment 类。有人有解决方案吗?谢谢你。
问候,
我只是想问一下,Google Map Api 密钥第 2 版是否有任何方法或类,我可以通过派生的纬度和经度获取当前位置(在地址中)。在 Google Map Api 版本 1 中有类 Geocoder,我们可以使用它来将纬度和经度更改为地址。但我认为我们不能在 Api v2 中使用 Geocoder 类,因为它使用 Fragment 类。有人有解决方案吗?谢谢你。
Geocoder
不是 Maps API v1 的一部分,您可以将其与 API v2 一起使用。
是的,GeoCoder 真的很可怕。在某些设备上,这无法正常工作。你可以这样做,这是独立的......做一个json请求:
如果您需要其他方式,该代码将为您提供帮助。地址 -> 位置
public static JSONObject getLocationInfo(String address) {
HttpGet httpGet = new HttpGet("http://maps.google.com/maps/api/geocode/json?address=" +address+"&ka&sensor=false");
HttpClient client = new DefaultHttpClient();
HttpResponse response;
StringBuilder stringBuilder = new StringBuilder();
try {
response = client.execute(httpGet);
HttpEntity entity = response.getEntity();
InputStream stream = entity.getContent();
int b;
while ((b = stream.read()) != -1) {
stringBuilder.append((char) b);
}
} catch (ClientProtocolException e) {
} catch (IOException e) {
}
JSONObject jsonObject = new JSONObject();
try {
jsonObject = new JSONObject(stringBuilder.toString());
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return jsonObject;
}
public static GeoPoint getGeoPoint(JSONObject jsonObject) {
Double lon = new Double(0);
Double lat = new Double(0);
try {
lon = ((JSONArray)jsonObject.get("results")).getJSONObject(0)
.getJSONObject("geometry").getJSONObject("location")
.getDouble("lng");
lat = ((JSONArray)jsonObject.get("results")).getJSONObject(0)
.getJSONObject("geometry").getJSONObject("location")
.getDouble("lat");
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return new GeoPoint((int) (lat * 1E6), (int) (lon * 1E6));
}