百度坐标拾取器接口

iOS 系统自带的地理位置反编码还是太慢,毕竟请求国外的数据,相比,扔到国内就快多了。最近有一个显示用户地理位置的需求,但是仅仅是这个需求,还没有足够的理由让我去集成三方地图的 SDK。系统的又太慢,所以在咨询小锅以后,他提供了百度的坐标拾取器。这是一个 web,客户端要用,还需要找到访问接口。所以花了一点时间,抓到了请求接口,方便有需求的朋友访问。

因为绝大多数都只有坐标转位置的需求,而没有位置转坐标的。所以不提供位置转坐标的接口,如有需要,请评论,我单独提供。

接口信息

地址:

http://api.map.baidu.com/?qt=rgc&x=13407612.87&y=3550364.78&dis_poi=1

NOTE:

qt 和?dis_poi 是固定参数,后者表示返回周围的商家信息的数量(商家数量还需要配合其他接口参数,这里没需求,就没写)。

xy 参数分别表示转成 MC 坐标的经纬度(转 MC 坐标的方式在文末)

返回数据结构:

{
"content": {
"address": "浙江省嘉兴市桐乡市崇德中路47", // 具体位置
"address_detail": {
"city": "嘉兴市",
"city_code": 334,
"country": "中国",
"country_code": 0,
"direction": "附近",
"distance": "26",
"district": "桐乡市",
"province": "浙江省",
"street": "崇德中路",
"street_number": "47"
},
"business": "",
"poi_desc": "",
"poi_region": [],
"point": {
"x": "13407612.87", // 纬度MC转码后的值
"y": "3550364.78" // 经度MC转码后的值
},
"surround_poi": []
},
// ------------------ 下面都是一些没用的返回值了,可以不用管 -----------------
"result": {
"error": 0,
"type": 44,
"qt": "rgc",
"x": "13407612.87",
"y": "3550364.78",
"dis_poi": "1",
"time": 0
},
"current_city": {
"sup_bus": 0,
"sup_business_area": 0,
"sup_lukuang": 0,
"sup_subway": 0
},
"hot_city": [
"北京市|131",
"上海市|289",
"广州市|257",
"深圳市|340",
"成都市|75",
"天津市|332",
"南京市|315",
"杭州市|179",
"武汉市|218",
"重庆市|132"
]
}

转 MC 坐标

下面来说说如何将经纬度转 MC 坐标,我写了一个函数,可以直接使用:

https://github.com/saitjr/STConvertLL2MC

其中 MC 是一个结构体,使用 . 来进行访问。

调用方式:

MC result = convertLL2MC(116.444225, 39.985071);
NSLog(@"%lf, %lf", result.x, result.y);
// 经过转换以后,x 和 y 就能传给服务器了

参考:

http://www.71j.cn/archives/311