• 记一次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,地图有了点点。。。。

    啊。。。多么有意义的一天~~~~

  • 相关阅读:
    CS 系统框架二[完善自动更新]
    CS 系统框架二
    CS 系统框架二[增加默认启动以及代码打开窗体]
    2022届宝鸡质检[1]文数参考答案
    2022届宝鸡质检[1]理数参考答案
    合并DataTable并排除重复数据的通用方法
    IE6鼠标闪烁之谜
    Windows下MemCache多端口安装配置
    XML解析文件出错解决方法
    巧用row_number和partition by分组取top数据
  • 原文地址:https://www.cnblogs.com/dpwow/p/9878267.html
Copyright © 2020-2023  润新知