记一次Echarts地图百度坐标使用
Posted dpwow
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记一次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地图百度坐标使用的主要内容,如果未能解决你的问题,请参考以下文章