google关于位置的一个api

Posted by baicai on July 4, 2013

I have found a workaround to the       issue. I used the standard google api:       http://code.google.com/apis/maps/documentation/geocoding/

I have       created a method that received a String address like "220+victoria+square"       and returns a JSONObject with the response of the HTTP Call

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

After executing this, another method converts that JSONObject       into a GeoPoint.

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));

        }

However       this solution is extremely nasty and coupled..

I hope this  helps

 

http://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,73.961452&sensor=false
根据经纬度查询位置信息