以下是我的代码。对于某些地址,以下代码适用于Android设备API级别8.但是对于某些地址,地址的值将返回为[] .BUt从iphone调用相同服务器时,我没有遇到此类问题。
Geocoder geocoder = new Geocoder(getApplicationContext(), Locale.getDefault());
List<Address> address = geocoder.getFromLocationName(MAPADDRESS, 1);
如何在Android设备中解决此问题。
答案 0 :(得分:0)
这里的问题是你在查询时只请求一个地址
List<Address> address = geocoder.getFromLocationName(MAPADDRESS, 1);
Android会尝试在这种情况下只找到一个地址。你应该提高2或3。
也许在第二或第三的位置你会成功。
将其更改为
List<Address> address = geocoder.getFromLocationName(MAPADDRESS, 3);
答案 1 :(得分:0)
只需使用以下方法......在调用时给出字符串输入
public static JSONObject getLocationInfo(String address) {
StringBuilder stringBuilder = new StringBuilder();
try {
address = address.replaceAll(" ","%20");
HttpPost httppost = new HttpPost("http://maps.google.com/maps/api/geocode/json?address=" + address + "&sensor=false");
HttpClient client = new DefaultHttpClient();
HttpResponse response;
stringBuilder = new StringBuilder();
response = client.execute(httppost);
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;
}