記一次Echarts地圖百度坐標使用
由於工作原因,需要用到echarts的中國地圖圖表,像往常一樣引入ecchart.js
然後。。。悲催,地圖不加載,經過跟蹤代碼,發現地圖接口報錯,echart.js 報了地圖js的錯誤,發現沒有引用china.js
由於這次引用的echarts的版本為3.0版本,發現集成之前項目的2.0的china.js 會有錯誤,便決定前往官網下載
隨後前往http://ecomfe.github.io/echarts-map-tool/下載地圖js,接著看到了可怕的界面:
居然不提供百度地圖js的下載了。。。。。瞬間覺得心好痛
日子還要繼續,代碼還要交付,痛定思痛,穩定情緒,想到可以試下找找源碼或者示例程序,就醬紫
帶著忐忑的心情我打開了githubhttps://github.com/apache/incubator-echarts,尋找github的救贖,當看到
我不禁笑出了豬叫,啊不,笑聲。。。因為剛好遇見你
立馬進行download進行下載,引用china.js集成到項目,very well,中國地圖不負所望的呈現了出來,
接著進行省份地圖鉆取的功能開發,嗯。。。沒有,老毛病。。。沒有省份的js
還好我有province文件夾,打開之後,整個人都開心了,慢慢的省份js,接著引入到頁面
一頓ctrl+F5刷新,嗯,厲害了我的國,他可以鉆取了。。。。
至此,地圖的加載已經完成。
接下來是散點的坐標。。。根據echarts文檔,散點圖的地理地圖坐標系需要百度的經緯度,沒說的,百度之
百度百度地圖百度到了百度地圖的百度地圖拾取系統 http://api.map.baidu.com/lbsapi/getpoint/index.html,沒語病~~~~
輸入地點名稱,百度,真好,拿到了經緯度坐標,然鵝,沒有批量的操作。。。。但是我有好幾百個低點位置啊。。。讓我如何是好
沒辦法,只能需求百度地圖api的指引。。。打開http://lbsyun.baidu.com/index.php?title=%E9%A6%96%E9%A1%B5
經過一番查找,找到地點檢索服務,看到。。。
接著就是按這個流程進行了註冊。。順利拿到服務秘鑰。
接下來就是調用接口了,簡單點,python的實現簡單點,參考百度api開發文檔,貼上一段簡單的輪詢api的python程序,作為記錄
# -*- coding: UTF-8 -*- import urllib import urllib2 import hashlib import json import sys import codecs adressFile = ‘plazaname.txt‘ coordsFile = ‘coords.txt‘ def getAddressCoord(address): coord = [] AK = ‘myak‘ SK = ‘mysk‘ url = ‘http://api.map.baidu.com‘ # 以get請求為例http://api.map.baidu.com/geocoder/v2/?address=百度大廈&output=json&ak=yourak queryStr = ‘/geocoder/v2/?address=‘+address+‘&output=json&ak=‘ + AK # 對queryStr進行轉碼,safe內的保留字符不轉換 encodedStr = urllib.quote(queryStr, safe="/:=&?#+!$,;‘@()*[]") # 在最後直接追加上yoursk rawStr = encodedStr + SK # md5計算出的sn值7de5a22212ffaa9e326444c75a58f9a0 # 最終合法請求url是http://api.map.baidu.com/geocoder/v2/?address=百度大廈&output=json&ak=yourak&sn=7de5a22212ffaa9e326444c75a58f9a0 SN= hashlib.md5(urllib.quote_plus(rawStr)).hexdigest() url = urllib.quote(url+queryStr+"&sn="+SN, safe="/:=&?#+!$,;‘@()*[]") response = urllib2.urlopen(url) html = response.read() decoded = json.loads(html) print decoded if decoded["status"] != 302: coord.append(decoded["result"]["location"]["lng"]) coord.append(decoded["result"]["location"]["lat"]) return coord def getAddressList(): file = codecs.open(adressFile,‘r‘) lines = [line.strip() for line in file] file.close() return lines def getAdressCoords(): dict_t = {} content = getAddressList() for address in content: key = str(address).decode("utf-8") dict_t[key] = getAddressCoord(address) with codecs.open(coordsFile,‘w‘) as f: f.write(json.dumps(dict_t, ensure_ascii=False)) getAdressCoords()
接著順利的拿到了各個地點的經緯度數據,引入到js,地圖有了點點。。。。
啊。。。多麽有意義的一天~~~~
記一次Echarts地圖百度坐標使用