百度API根据经纬度取地址问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了百度API根据经纬度取地址问题相关的知识,希望对你有一定的参考价值。

window.sul;
function GetAddress(x,y)

var myP1 = new BMap.Point(x,y);
geoc.getLocation(myP1,function(rs)
var addComp = rs.addressComponents;
if(addComp.province==addComp.city)

window.sul=addComp.city+addComp.district+addComp.street+addComp.streetNumber;

else

window.sul=addComp.province+addComp.city+addComp.district+addComp.street+addComp.streetN umber;

alert(window.sul);
);
return(window.sul);


源码如上。在回调函数里面alert(window.sul);弹出的结果都是对的。但是最下面retrun出来的是null值。我现在就是要把window.sul return出来 谁能帮帮我。

利用百度地图api通过城市地址等信息取经纬度

原创 2016年05月18日 10:25:01

    标签:

    百度地图 /

    微信 /

    api /

    url /

    json

    21454

    标红的是可以通过经纬度获得当前城市信息(微信定位使用)。

    Geocoding API有哪些功能?

    Geocoding API包括地址解析和逆地址解析功能。

    地址解析是指,由详细到街道的结构化地址得到百度经纬度信息,且支持名胜古迹、标志性建筑名称直接解析返回百度经纬度。例如:“北京市海淀区中关村南大街27号”地址解析的结果是“lng:116.31985,lat:39.959836”,“百度大厦”地址解析的结果是“lng:116.30815,lat:40.056885”

    逆地址解析是指,由百度经纬度信息得到结构化地址信息。例如:“lat:31.325152,lng:120.558957”逆地址解析的结果是“江苏省苏州市虎丘区塔园路318号”。注意:

    1.因为Geocoding和反Geocoding使用的门址数据以及算法都不是一样的,所以会出现不能一一对应的现象。

    2.解析过程中可能会出现一对坐标值对应多个地址门牌信息,本接口将返回距离坐标点最近的一个地址门牌信息。

    使用限制

    目前无任何使用限制。请申请key,然后使用该接口。

    如何使用

    第一步,申请key,点击这里获取密钥,申请key需要注册百度账号;

    第二步,拼写发送http请求的url,注意需使用第一步申请的key;

    第三步,接收http请求返回的数据(支持json和xml格式)。

    服务地址

    http://api.map.baidu.com/geocoder?address=地址&output=输出格式类型&key=用户密钥&city=城市名

    http://api.map.baidu.com/geocoder?location=纬度,经度&output=输出格式类型&key=用户密钥

    备注:

    1. city属于可选参数,通常情况可以不使用,若解析无结果,请尝试增加此字段。

    2. 支持名胜古迹、标志性建筑物名称解析返回百度经纬度坐标,如address=“百度大厦”。

    3. 支持使用“*路与*路交叉口”方式解析返回百度经纬度坐标,若地址库中存在该地址描述,返回百度经纬度坐标。

    4. 若解析status字段为OK,若结果内容为空,原因分析及可尝试方法:

    5. 特别提醒:逆地址解析location参数传入的参数格式是(纬度lat,经度lng)。

    接口参数

    参数

    是否必须

    默认值

    格式举例

    含义

    output    否    json    json或xml    输出格式为json或者xml    

    address    是    无    北京市海淀区上地十街10号    根据指定地址进行坐标的反定向解析    

    location    是    无    38.76623,116.43213
    lat<纬度>,lng<经度>    根据指定坐标来进行地址的解析    

    city    否    “北京市”    “广州市”    地址所在的城市名    

    key    是    无    8cb976834235d8cbcde2dce4835ae191    用户申请注册的key    

    上表中address和location两个字段如果同时出现,则优先选择address执行地理编码功能。对于address字段可能会出现中文或其它一些特殊字符(如:空格),所以对于类似的字符都要进行编码处理,编码成 UTF-8 字符的二字符十六进制值,凡是不在下表中的字符都要进行编码。

    字符集合

    字符

    URL非保留字    a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 – _ . ~    

    URL保留字    ! * ‘ ( ) ; : @ & = + $ , / ? % # [ ]    

    附注:

    (1) javascript中一般采用encodeURIComponent函数对特殊字符进行编码。

    (2) Java中可以使用函数URLEncoder.encode对特殊字符进行编码。

    (3) C#中可以使用函数HttpUtility.UrlEncode对特殊字符进行编码。

    (4) php中可以使用函数urlencode对特殊字符进行编码。

    返回数据说明

    返回结果(地址解析的结果)

    status: '字符串状态常量', 取值如下:
    //OK 成功
    INVILID_KEY 非法密钥
    INVALID_PARAMETERS 非法参数,参数错误时候给出。
    result:
    location:
    lat: 纬度:数值,
    lng: 经度:数值
    ,
    precise:’位置的附加信息,是否精确查找’(1为精确查找,0为不精确查找),
    confidence: 可信度,
    level:'级别'
    ,

    返回结果(反地址解析的结果)

    status: '字符串状态常量', 取值如下:
    //OK 成功
    INVILID_KEY 非法密钥
    INVALID_PARAMETERS 非法参数,参数错误时候给出。
    result:
    location:
    lat: 纬度:数值,
    lng: 经度:数值
    ,
    formatted_address: ‘详细地址描述’,
    business: '周围商圈',
    addressComponent:
    city:’城市名称’,
    district: ‘区县名称’,
    province:’省份名称’,
    street: ‘街道名称’,
    streetNumber: '门牌号码'
    ,
    cityCode: '城市代码'


    接口示例

    根据详细地址获取坐标

    http://api.map.baidu.com/geocoder?address=%E4%B8%8A%E5%9C%B0%E5%8D%81%E8%A1%9710%E5%8F%B7&output=json&key=37492c0ee6f924cb5e934fa08c6b1676

    //根据“上地十街10号”返回坐标“lng:116.307175, lat:40.057098”,以json格式输出

    http://api.map.baidu.com/geocoder?address=%E4%B8%8A%E5%9C%B0%E5%8D%81%E8%A1%9710%E5%8F%B7&output=xml&key=37492c0ee6f924cb5e934fa08c6b1676

    //根据“上地十街十号”返回坐标“lng:116.307175, lat:40.057098”,以xml格式输出
    在指定城市内检索详细地址的坐标

    http://api.map.baidu.com/geocoder?address=%E4%B8%8A%E5%9C%B0%E5%8D%81%E8%A1%9710%E5%8F%B7&output=json&key=37492c0ee6f924cb5e934fa08c6b1676&city=%E5%8C%97%E4%BA%AC%E5%B8%82

    // 在北京市内根据“上地十街10号”返回坐标“lng:116.307175, lat:40.057098”,以json格式输出

    http://api.map.baidu.com/geocoder?address=%E4%B8%8A%E5%9C%B0%E5%8D%81%E8%A1%9710%E5%8F%B7&output=xml&key=37492c0ee6f924cb5e934fa08c6b1676&city=%E5%8C%97%E4%BA%AC%E5%B8%82

    // 在北京市内根据“上地十街10号”返回坐标“lng:116.307175, lat:40.057098”,以json格式输出
    根据特定建筑物获取它的坐标

    http://api.map.baidu.com/geocoder?address=%E7%99%BE%E5%BA%A6%E5%A4%A7%E5%8E%A6&output=json&key=37492c0ee6f924cb5e934fa08c6b1676  //根据“百度大厦”名称返回坐标“lng:116.307175, lat:40.057098”,以json格式输入

    http://api.map.baidu.com/geocoder?address=%E7%99%BE%E5%BA%A6%E5%A4%A7%E5%8E%A6&output=xml&key=37492c0ee6f924cb5e934fa08c6b1676  //根据“百度大厦”名称返回坐标“lng:116.307175, lat:40.057098”,以xml格式输入
    根据“*路与*路交叉路口”类型地址描述获得它的坐标

    http://api.map.baidu.com/geocoder?address=%E5%8C%97%E4%B8%80%E7%8E%AF%E8%B7%AF%E5%92%8C%E9%98%9C%E9%98%B3%E8%B7%AF%E7%9A%84%E4%BA%A4%E5%8F%89%E8%B7%AF%E5%8F%A3&output=json&key=37492c0ee6f924cb5e934fa08c6b1676

    //根据“北一环路和阜阳路的交叉路口”名称返回坐标“lng:117.294364, lat:31.885558”,以json格式输入

    http://api.map.baidu.com/geocoder?address=%E5%8C%97%E4%B8%80%E7%8E%AF%E8%B7%AF%E5%92%8C%E9%98%9C%E9%98%B3%E8%B7%AF%E7%9A%84%E4%BA%A4%E5%8F%89%E8%B7%AF%E5%8F%A3&output=xml&key=37492c0ee6f924cb5e934fa08c6b1676

    //根据“北一环路和阜阳路的交叉路口”名称返回坐标“lng:117.294364, lat:31.885558”,以xml格式输入
    根据坐标获取它的地址

    http://api.map.baidu.com/geocoder?output=json&location=39.983424,%20116.322987&key=37492c0ee6f924cb5e934fa08c6b1676

    //解析“lat:39.983424, lng:116.322987”坐标返回“北京市海淀区中关村大街27号1101-08室”,以json格式输出

    http://api.map.baidu.com/geocoder?output=xml&location=39.983424,%20116.322987&key=37492c0ee6f924cb5e934fa08c6b1676

    //解析“lat:39.983424, lng:116.322987”坐标返回“北京市海淀区中关村大街27号1101-08室”,以xml格式输出

    地址库里无此数据,本次结果为空。

    加入city字段重新解析;

    将过于详细或简单的地址更改至省市区县街道重新解析;

    逆地址解析:根据坐标获取地址

    地址解析:根据地址获取坐标

    百度地址http://developer.baidu.com/map/geocoding-api.htm

参考技术A 请问最后怎么解决的 参考技术B 哥啊,我也碰到这样的问题了,怎么解决的啊?q553600892,谢了 参考技术C 不是直接在API页,获取代码的么,不用搞这么复杂吧。追问

我要在.net页面winform页面调用这个JS方法 然后返回给我的.net项目

追答

要返回值啊,这个就看不懂了,度娘给了很多API地图接口,有静态的,车联网的,web服务的,看看哪个适合,我也不太懂这种返回值的,一般都是直接复制调用他的地图代码。

参考技术D 因为回调函数是异步调用的,设置个全局变量,在里面赋值就OK 啦

以上是关于百度API根据经纬度取地址问题的主要内容,如果未能解决你的问题,请参考以下文章

调用百度地图api怎么根据多个经纬度显示点位

百度地图--api--获取经纬度

百度地图api服务端根据地址得到经纬度

百度地图api根据经纬度获取地址的详细信息

利用百度地图API根据地址查询经纬度

利用百度API(js),怎样通过地址获取经纬度