更多可以查看 http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding
地理編碼示例:
以下是關於地理編碼參數使用方法的示例。發送請求顯示結果的JavaScript代碼此處查看。
請求示例:對北京市百度大廈進行地理編碼查詢;
http://api.map.baidu.com/geocoder/v2/?callback=renderOption&output=json&address=百度大廈&city=北京市&ak=您的ak
地理編碼返回結果字段:
| 名稱 | 類型 | 說明 | |
|---|---|---|---|
| status | Int | 返回結果狀態值, 成功返回0,其他值請查看下方返回碼狀態表。 | |
| location | object | 經緯度坐標 | |
| lat | float | 緯度值 | |
| lng | float | 經度值 | |
| precise | Int | 位置的附加信息,是否精確查找。1為精確查找,即准確打點;0為不精確,即模糊打點。 | |
| confidence | Int | 可信度,描述打點准確度 | |
| level | string | 地址類型 | |
json格式的返回值:
renderOption&&renderOption({"status":0,"result":{"location":{"lng":116.30775539540982,"lat":40.05685561073758},"precise":1,"confidence":80,"level":"商務大廈"}})

這對一條兩條的轉可以, 要大批量的呢??? 一堆位置,都還沒對應的經緯度,只有一個位置名稱....
思路:
1. 在原位置功能上,增加1個設置經緯度的,手工編輯下,錄入入庫;
2. 把位置這個轉成經緯度, 看看有沒批量的,批量操作拿到后,先入到庫;
后面直接調用接口,數據返回用就行..
怎么用程序通過百度地圖API批量獲取具體地址的經緯度
搬過來的,沒試過,后面試試看
https://zhidao.baidu.com/question/2078225436147396308.html?fr=iks&word=js%B0%D9%B6%C8%B5%D8%CD%BCapi+%CE%BB%D6%C3%C5%FA%C1%BF%D7%AA%CE%AC%B6%C8&ie=gbk
方法一
建議使用xGeocoding工具,可以批量獲得Google Earth/Google Map/百度/騰訊/高德等地圖的經緯度。工具地址如下:http://www.gpsspg.com/xgeocoding/
方案二
使用Python程序,直接嵌入即可。代碼如下:(需要注意的是百度API獲取的是墨卡托坐標,而實際使用的是WGS84坐標。代碼已添加轉換,只要設定語言一致即可實現。)
#!/usr/bin/python
#coding:utf-8
import xlrd
import xlwt
import requests
import urllib
import math
import re
pattern_x=re.compile(r'"x":(".+?")')
pattern_y=re.compile(r'"y":(".+?")')
def mercator2wgs84(mercator):
#key1=mercator.keys()[0]
#key2=mercator.keys()[1]
point_x=mercator[0]
point_y=mercator[1]
x=point_x/20037508.3427892*180
y=point_y/20037508.3427892*180
y=180/math.pi*(2*math.atan(math.exp(y*math.pi/180))-math.pi/2)
return (x,y)
def get_mercator(addr):
quote_addr=urllib.quote(addr.encode('utf8'))
city=urllib.quote(u'<a href="https://www.baidu.com/s?wd=%E9%BD%90%E9%BD%90%E5%93%88%E5%B0%94%E5%B8%82&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YznHndPHNBrjfYryR1mH9B0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnW0LrjczPHf1PWDYP1n4PWnsr0" target="_blank" class="baidu-highlight">齊齊哈爾市</a>龍'.encode('utf8'))
province=urllib.quote(u'<a href="https://www.baidu.com/s?wd=%E9%BB%91%E9%BE%99%E6%B1%9F%E7%9C%81&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YznHndPHNBrjfYryR1mH9B0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnW0LrjczPHf1PWDYP1n4PWnsr0" target="_blank" class="baidu-highlight">黑龍江省</a>'.encode('utf8'))
if quote_addr.startswith(city) or quote_addr.startswith(province):
pass
else:
quote_addr=city+quote_addr
s=urllib.quote(u'北京市'.encode('utf8'))
api_addr="http://api.map.baidu.com/?qt=gc&wd=%s&cn=%s&ie=utf-8&oue=1&fromproduct=jsapi&res=api&callback=BMap._rd._cbk62300"%(quote_addr
,s)
req=requests.get(api_addr)
content=req.content
x=re.findall(pattern_x,content)
y=re.findall(pattern_y,content)
if x:
x=x[0]
y=y[0]
x=x[1:-1]
y=y[1:-1]
x=float(x)
y=float(y)
location=(x,y)
else:
location=()
return location
def run():
data=xlrd.open_workbook('Book2.xls')
rtable=data.sheets()[0]
nrows=rtable.nrows
values=rtable.col_values(0)
workbook=xlwt.Workbook()
wtable=workbook.add_sheet('data',cell_overwrite_ok=True)
row=0
for value in values:
mercator=get_mercator(value)
if mercator:
wgs=mercator2wgs84(mercator)
else:
wgs=('NotFound','NotFound')
print "%s,%s,%s"%(value,wgs[0],wgs[1])
wtable.write(row,0,value)
wtable.write(row,1,wgs[0])
wtable.write(row,2,wgs[1])
row=row+1
workbook.save('data.xls')
if __name__=='__main__':
run()

