使用地理编码器的Android-Get位置指针

时间:2012-06-01 10:04:52

标签: android

以下是我的代码。对于某些地址,以下代码适用于Android设备API级别8.但是对于某些地址,地址的值将返回为[] .BUt从iphone调用相同服务器时,我没有遇到此类问题。

Geocoder geocoder = new Geocoder(getApplicationContext(), Locale.getDefault());
List<Address> address = geocoder.getFromLocationName(MAPADDRESS, 1);

如何在Android设备中解决此问题。

2 个答案:

答案 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;
        }