利用google map api根据经纬度来确定地理位置


首先根据官方文档:谷歌地图API网络服务,通过浏览器:http://ditu.google.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=false&&language=zh-CN,得到返回的数据是:

{
  "status": "OK",
  "results": [ {
    "types": [ "street_address" ],
    "formatted_address": "279-281 貝德福大街, 布魯克林, 紐約 11211, 美國",
    "address_components": [ {
      "long_name": "279-281",
      "short_name": "279-281",
      "types": [ "street_number" ]
    }, {
      "long_name": "貝德福大街",
      "short_name": "貝德福大街",
      "types": [ "route" ]
    }, {
      "long_name": "布魯克林",
      "short_name": "布魯克林",
      "types": [ "sublocality", "political" ]
    }, {
      "long_name": "紐約",
      "short_name": "紐約",
      "types": [ "locality", "political" ]
    }, {
      "long_name": "京斯",
      "short_name": "京斯",
      "types": [ "administrative_area_level_2", "political" ]
    }, {
      "long_name": "紐約",
      "short_name": "NY",
      "types": [ "administrative_area_level_1", "political" ]
    }, {
      "long_name": "美國",
      "short_name": "US",
      "types": [ "country", "political" ]
    }, {
      "long_name": "11211",
      "short_name": "11211",
      "types": [ "postal_code" ]
    } ],
    "geometry": {
      "location": {
        "lat": 40.7142215,
        "lng": -73.9614454
      },
      "location_type": "RANGE_INTERPOLATED",
      "viewport": {
        "southwest": {
          "lat": 40.7110552,
          "lng": -73.9646313
        },
        "northeast": {
          "lat": 40.7173505,
          "lng": -73.9583361
        }
      },
      "bounds": {
        "southwest": {
          "lat": 40.7139010,
          "lng": -73.9616800
        },
        "northeast": {
          "lat": 40.7145047,
          "lng": -73.9612874
        }
      }
    }
  }
需要利用程序分析返回的结果,打算利用java模拟http请求,得到返回的数据。代码片段如下:
pom文件中引入必要的jar包:

<dependency>

        <groupId>commons-httpclient</groupId>

        <artifactId>commons-httpclient</artifactId>

        <version>3.1</version>

    </dependency>

java代码片段:

private static HttpMethod getGetMethod() throws IOException {

        GetMethod get = new GetMethod("/maps/api/geocode/json");

        NameValuePair simcard = new NameValuePair("latlng", "40.714224,-73.961452");

        NameValuePair simcard1 = new NameValuePair("sensor", "false");

        NameValuePair simcard2 = new NameValuePair("language", "zh-CN");

        get.setQueryString(new NameValuePair[] { simcard, simcard1,simcard2});

        //InputStream input = new FileInputStream(new File("/home/ubuntu/my.txt"));

        //"".getBytes("ISO8859-1")

        //InputStream input = new StringBufferInputStream("my test aaaaaaaaaa");

        //post.setRequestBody(input);

        return get;

    }

public static void main(String[] args) throws IOException {

        HttpClient client = new  HttpClient();

        client.getHostConfiguration().setHost("ditu.google.com", 80, "http");

        HttpMethod method = getGetMethod();// 使用GET方式提交数据

        client.executeMethod(method);

        // 打印服务器返回的状态

        System.out.println(method.getStatusLine());

        // 打印结果页面

        ;

//        
        try {

            BufferedReader rd = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream(),

                    "UTF-8"));

            StringBuffer sb = new StringBuffer();

            String line;

            while ((line = rd.readLine()) != null) {

                sb.append(line);

            }

            rd.close();

            System.out.println("接受到的流是:" + sb);

        } catch (IOException e) {

            throw new RuntimeException("error", e);

        }

        method.releaseConnection();

    }

完整代码见:http://bigcateasymorse.googlecode.com/svn/trunk/GoogleMapCoding/


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM