Java根据百度API获得经纬度,然后根据经纬度在获得城市信息

原文:http://www.open-open.com/code/view/1421032487812

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

/**
* 获取经纬度
*
* @author jueyue 返回格式:Map<String,Object> map map.put("status",
* reader.nextString());//状态 map.put("result", list);//查询结果
* list<map<String,String>>
* 密钥:f247cdb592eb43ebac6ccd27f796e2d2
*/
public class GetLatAndLngByBaidu { 

    /**
    * @param addr
    * 查询的地址
    * @return
    * @throws IOException
    */
    public Object[] getCoordinate(String addr) throws IOException {
        String lng = null;//经度
        String lat = null;//纬度
        String address = null;
        try {
            address = java.net.URLEncoder.encode(addr, "UTF-8");
        }catch (UnsupportedEncodingException e1) {
            e1.printStackTrace();
        }
        String key = "f247cdb592eb43ebac6ccd27f796e2d2";
        String url = String .format("http://api.map.baidu.com/geocoder?address=%s&output=json&key=%s", address, key);
        URL myURL = null;
        URLConnection httpsConn = null;
        try {
            myURL = new URL(url);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
        InputStreamReader insr = null;
        BufferedReader br = null;
        try {
            httpsConn = (URLConnection) myURL.openConnection();// 不使用代理
            if (httpsConn != null) {
                insr = new InputStreamReader( httpsConn.getInputStream(), "UTF-8");
                br = new BufferedReader(insr);
                String data = null;
                int count = 1;
                while((data= br.readLine())!=null){
                    if(count==5){
                        lng = (String)data.subSequence(data.indexOf(":")+1, data.indexOf(","));//经度
                        count++;
                    }else if(count==6){
                        lat = data.substring(data.indexOf(":")+1);//纬度
                        count++;
                    }else{
                        count++;
                    }
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if(insr!=null){
                insr.close();
            }
            if(br!=null){
                br.close();
            }
        }
        return new Object[]{lng,lat};
    } 

    public static void main(String[] args) throws IOException {
        GetLatAndLngByBaidu getLatAndLngByBaidu = new GetLatAndLngByBaidu();
        Object[] o = getLatAndLngByBaidu.getCoordinate("成都市天府四街");
        System.out.println(o[0]);//经度
        System.out.println(o[1]);//纬度
    }

}

输出结果:104.04701

30.548397

调用以下路径根据经纬度获取地址,返回数据为JSON格式,

http://api.map.baidu.com/geocoder/v2/?ak=pmCgmADsAsD9rEXkqWNcTzjd&location=30.548397,104.04701&output=json&pois=1

返回结果:

{"status":0,"result":{"location":{"lng":104.04701001273,"lat":30.548396923974},"formatted_address":"四川省成都市武侯区天府四街","business":"","addressComponent":{"city":"成都市","district":"武侯区","province":"四川省","street":"天府四街","street_number":""},"pois":[{"addr":"四川省成都市武侯区天府四街","cp":"NavInfo","distance":"144","name":"保利·心语花园","poiType":"地产小区","point":{"x":104.04823889466,"y":30.54874673449},"tel":"","uid":"881965b85a8d8a977369d348","zip":""},{"addr":"四川省成都市武侯区天府四街","cp":"NavInfo","distance":"629","name":"逸都国际","poiType":"地产小区","point":{"x":104.05247889667,"y":30.547152788724},"tel":"","uid":"e49f869c4f156be9c6effb6b","zip":""},{"addr":"四川省成都市武侯区剑南大道","cp":"NavInfo","distance":"881","name":"世豪广场","poiType":"地产小区","point":{"x":104.05252381195,"y":30.553318490823},"tel":"","uid":"a2a7b0b167a0e1997adbd206","zip":""},{"addr":"四川省成都市武侯区德赛三街","cp":"NavInfo","distance":"989","name":"顾客停车场","poiType":"交通设施","point":{"x":104.04942465794,"y":30.555798655385},"tel":"","uid":"d135a6e15571911483a00cfe","zip":""}],"cityCode":75}}
时间: 2024-10-08 00:11:05

Java根据百度API获得经纬度,然后根据经纬度在获得城市信息的相关文章

带头大哥777:Java调用百度API实现翻译

本设计参考了CSDN"京城第一歌姬"博客的设计思路,完成,本人在自己电脑上完全自己创建项目,自己敲代码完成,最后运行成功,我用的开发工具是Myeclipse10 ,JDK1.7 下运行,如图: 项目文件 下面是Java调用百度API实现翻译的具体步骤: 一.在写代码之前先在在百度翻译平台中,申请APP_ID 申请地址申请的详见 点击打开链接 http://api.fanyi.baidu.com/api/trans/product/index 申请之后,会得到APP_ID和SECURIT

根据百度地图API获取指定地点的经纬度

做项目时,遇到对地点获取地图中对应的经纬度,作一下笔记,以备以后直接使用 package com.hpzx.data; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.n

Java 调用Google Map Api解析地址,解析经纬度实例

Java 调用Google Map Api解析地址,解析经纬度实例 使用google地图的反向地址解析功能,提供一个经纬度得到对应地址,或者给出模糊地址,得到经纬度,放在java后台代码中处理,这个使用的是Google的地理编码服务.一般而言数据量不大的情况使用是不限制的.按照Google官方说法是连续90天请求地理编码服务次数超过2000次就会受到限制,因此可以将这些解析好的地址放在Database中,这样可以避免重复请求同一个地址. JAVA Code: /* * System Abbrev

PHP地址反查返回经纬度 百度API

/** * 百度地图   根据地址反查经纬度 */ public function search_xy(){ $address = str_replace(' ','',$address); $rows = file_get_contents("http://api.map.baidu.com/geocoder/v2/?ak=xxxxxxxxxxxxxx&callback=renderOption&output=json&address=首都图书馆&city=北京

百度api查询多个地址的经纬度的问题

在使用百度api查询多个地址的经纬度的时候,由于百度api提供的经纬度查询方法是回调函数,并且后续操作必须等经纬度获取完成才能进行,问题就存在于怎么判断所有地点是否都回调完成了,问了之前的一个前端大佬同事(我是一只前端弱鸡),给我提供的思路,在百度api的回调函数里面再调一次自定义的回调函数,从而在自定义的函数里面进行判断所有地点是否都回调完成了. 下面是具体代码, 1 <script> 2 //所有待查询经纬度的地点 3 var allAddress=new Array("北京西站

百度API使用--javascript api进行多点定位

使用百度地图提供的javascript api,给定多点的经纬度坐标,在百度地图上 显示这些坐标点. 其中包括各个点自适应地图显示,自定义坐标点的图标,以及各个点之间添加折线. 实现的效果如下图: 具体步骤如下: 1.页面引用百度地图api脚本 <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=你的密钥"></script> 其中ak为你

C#调用百度API方法,POST和GET请求

        #region Get请求         /// <summary>           /// HTTP GET方式请求数据.           /// </summary>           /// <param name="url">URL.</param>           /// <returns>返回数据</returns>           private static st

【转】百度API获取城市名地名(附源码)

在做一个软件时,用到了定位功能.网上有很多关于google 的GPS定位,但网上关于google定位都没有用, 搜索下原因:(这里建议大家在中国就尽量不使用系统自带的定位) 因为Google的服务器不在中国(就算能网上关于定位的代码能用,那也非常的慢,除非你的应用是在国外使用)    由于网络等原因所以定位一般会失败 于是转向使用百度api来定位. 所用到的百度API参考地址. 取得位置的百度官方sdk参考 Android定位SDK 由坐标获取地址方法参考 Geocoding API 的 7.逆

如何在android程序中使用百度api接口:

百度地图.百度语音.百度导航.百度定位等等.以下为使用百度天气提供的api,具有天气查询,城市设置,短信分享天气等基本功能,界面清爽,不过现在因为百度key的原因失效了,不能更新天气了.srceduswustiweatherwebUpdateWeather.java中的AK替换成自己申请的百度API KEY,申请地址http://lbsyun.baidu.com/apiconsole/key.代码有比较详细的注释.代码量也不大,有兴趣的朋友可以自己排查一下.项目编码UTF-8 默认编译版本4.2