zoukankan      html  css  js  c++  java
  • echarts迁移图动态加载

    迁移图

    获取迁移城市的经纬度

    可以调用高德的接口,实现根据地名找寻经纬度的方法

    #!/usr/bin/env python3
    #-*- coding:utf-8 -*-
    '''
    利用高德地图api实现地址和经纬度的转换
    '''
    import requests
    
    def geocode(address):
            parameters = {'address': address, 'key': 'your key'}
            base = 'http://restapi.amap.com/v3/geocode/geo'
            response = requests.get(base, parameters)
            answer = response.json()
            print(answer)
            if answer['geocodes']==[]:
                print("null")
            else:
                print(address + "的经纬度:", answer['geocodes'][0]['location'])
            str=answer['geocodes'][0]['location']
            list=str.split(',')
            newlist=[]
            for it in list:
                newlist.append(float(it))
            print(newlist)
    
    if __name__=='__main__':
            #address = input("请输入地址:")
            address = '邯郸'
            geocode(address)

    输出对应的格式化形式,如下

        var myecharts = null;
        var geoCoordMap = {
      "东台": [
        120.67086,
        32.765772
      ],
      "东海": [
        118.77406,
        34.528021
      ],
      "丰县": [
        116.595391,
        34.693906
      ],
      "丰泾村": [
        120.557053,
        31.500551
      ],
      "云龙区": [
        117.25156,
        34.253167
      ],
      "仪征市": [
        119.184766,
        32.272258
      ],
      "六合区": [
        118.821401,
        32.322247
      ],
      "吴中区": [
        120.631898,
        31.264212
      ],
      "吴江": [
        120.640272,
        30.976323
      ],
      "大丰": [
        120.686455,
        33.241831
      ],
      "太仓": [
        121.125358,
        31.441361
      ],
      "宜兴": [
        119.804423,
        31.362399
      ],
      "宝应县": [
        119.360729,
        33.240392
      ],
      "宿城区": [
        118.242534,
        33.963029
      ],
      "宿豫区": [
        118.330782,
        33.946822
      ],
      "宿迁沭阳": [
        118.275198,
        33.963232
      ],
      "宿迁泗阳": [
        118.275198,
        33.963232
      ],
      "常州市": [
        119.973987,
        31.810689
      ],
      "常熟": [
        120.757951,
        31.649566
      ],
      "建邺区": [
        118.731694,
        32.003552
      ],
      "开发区": [
        105.204857,
        37.514206
      ],
      "徐州": [
        117.284124,
        34.205768
      ],
      "徐州云龙区": [
        117.25156,
        34.253167
      ],
      "扬州市开发区": [
        119.427323,
        32.337737
      ],
      "新沂市": [
        118.354537,
        34.36958
      ],
      "昆山": [
        120.974177,
        31.341479
      ],
      "栖霞区": [
        118.909246,
        32.096228
      ],
      "江都区": [
        119.569989,
        32.434672
      ],
      "沛县": [
        116.937532,
        34.721656
      ],
      "沛县*": [
        116.937532,
        34.721656
      ],
      "泉山区": [
        117.193805,
        34.244258
      ],
      "泗阳县": [
        118.703038,
        33.72314
      ],
      "泰兴": [
        119.92869,
        32.13105
      ],
      "浦口区": [
        118.627895,
        32.059093
      ],
      "淮阴区": [
        119.034725,
        33.631893
      ],
      "玄武区": [
        118.797861,
        32.048687
      ],
      "盐都区": [
        120.153898,
        33.338094
      ],
      "睢宁县": [
        117.941563,
        33.912598
      ],
      "苏州高新区": [
        120.433904,
        31.329341
      ],
      "贾汪区": [
        117.466687,
        34.435506
      ],
      "贾汪区(全市)": [
        117.466687,
        34.435506
      ],
      "贾汪区(全市)": [
        117.466687,
        34.435506
      ],
      "连云区": [
        119.338788,
        34.760249
      ],
      "邗江区": [
        119.398015,
        32.377528
      ],
      "邳州市": [
        118.012531,
        34.338888
      ],
      "金湖县": [
        119.020585,
        33.025433
      ],
      "铜山区": [
        117.169421,
        34.1807
      ],
      "镇江市": [
        119.425836,
        32.187849
      ],
      "阜宁": [
        119.8295,
        33.776645
      ],
      "靖江": [
        120.265519,
        31.99775
      ],
      "高淳区": [
        118.892085,
        31.328471
      ],
      "鼓楼区": [
        114.348307,
        34.788561
      ]
    };

    基础图表的设置

    var planePath = 'path://M.6,1318.313v-89.254l-319.9-221.799l0.073-208.063c0.521-84.662-26.629-121.796-63.961-121.491c-37.332-0.305-64.482,36.829-63.961,121.491l0.073,208.063l-319.9,221.799v89.254l330.343-157.288l12.238,241.308l-134.449,92.931l0.531,42.034l175.125-42.917l175.125,42.917l0.531-42.034l-134.449-92.931l12.238-241.308L1705';
    
            var convertData = function (data) {
                var res = [];
                for (var i = 0; i < data.length; i++) {
                    var dataItem = data[i];
                    var fromCoord = geoCoordMap[dataItem[0].name];
                    var toCoord = geoCoordMap[dataItem[1].name];
                    if (fromCoord && toCoord) {
                        res.push([{
                            coord: fromCoord
                        }, {
                            coord: toCoord
                        }]);
                    }
                }
                return res;
            };
    
            var color = ['#3ed4ff', '#ffa022', '#a6c84c','#d71345','#8552a1','#deab8a'];
            var series=[];
    
            var option = {
                backgroundColor: '#080a20',
                title: {
                    left: 'left',
                    textStyle: {
                        color: '#fff'
                    }
                },
                tooltip: {
                    trigger: 'item'
                },
                legend: {
                    orient: 'vertical',
                    top: 'bottom',
                    left: 'right',
                    data: [],
                    textStyle: {
                        color: '#fff'
                    },
                    selectedMode: 'single'
                },
                geo: {
                    map: 'china',
                    zoom: 1.2,
                    label: {
                        emphasis: {
                            show: false
                        }
                    },
                    roam: true,
                    itemStyle: {
                        normal: {
                            areaColor: '#142957',
                            borderColor: '#0692a4'
                        },
                        emphasis: {
                            areaColor: '#0b1c2d'
                        }
                    }
                },
                series: series
            };
    View Code

    进行异步交互加载数据

    其中data.one|two|three等的格式为:

    {
      "five": [
        [
          {
            "name": "连云区"
          },
          {
            "name": "连云区",
            "value": 200
          }
        ],
        [
          {
            "name": "连云区"
          },
          {
            "name": "高淳区",
            "value": 55
          }
        ],
        [
          {
            "name": "连云区"
          },
          {
            "name": "建邺区",
            "value": 55
          }
        ],
        [
          {
            "name": "连云区"
          },
          {
            "name": "鼓楼区",
            "value": 55
          }
        ],
        [
          {
            "name": "连云区"
          },
          {
            "name": "浦口区",
            "value": 55
          }
        ],
        [
          {
            "name": "连云区"
          },
          {
            "name": "六合区",
            "value": 55
          }
        ],
        [
          {
            "name": "连云区"
          },
          {
            "name": "泰兴",
            "value": 55
          }
        ],
        [
          {
            "name": "连云区"
          },
          {
            "name": "泗阳县",
            "value": 55
          }
        ],
        [
          {
            "name": "连云区"
          },
          {
            "name": "阜宁",
            "value": 55
          }
        ],
        [
          {
            "name": "连云区"
          },
          {
            "name": "东台",
            "value": 55
          }
        ],
        [
          {
            "name": "连云区"
          },
          {
            "name": "江都区",
            "value": 55
          }
        ],
        [
          {
            "name": "连云区"
          },
          {
            "name": "宝应县",
            "value": 55
          }
        ],
        [
          {
            "name": "连云区"
          },
          {
            "name": "邗江区",
            "value": 55
          }
        ],
        [
          {
            "name": "连云区"
          },
          {
            "name": "仪征市",
            "value": 55
          }
        ],
        [
          {
            "name": "连云区"
          },
          {
            "name": "徐州云龙区",
            "value": 55
          }
        ],
        [
          {
            "name": "连云区"
          },
          {
            "name": "开发区",
            "value": 55
          }
        ],
        [
          {
            "name": "连云区"
          },
          {
            "name": "丰县",
            "value": 55
          }
        ],
        [
          {
            "name": "连云区"
          },
          {
            "name": "沛县*",
            "value": 55
          }
        ],
        [
          {
            "name": "连云区"
          },
          {
            "name": "铜山区",
            "value": 55
          }
        ],
        [
          {
            "name": "连云区"
          },
          {
            "name": "睢宁县",
            "value": 55
          }
        ],
        [
          {
            "name": "连云区"
          },
          {
            "name": "新沂市",
            "value": 55
          }
        ],
        [
          {
            "name": "连云区"
          },
          {
            "name": "贾汪区",
            "value": 55
          }
        ]
      ],
      "four": [
        [
          {
            "name": "金湖县"
          },
          {
            "name": "金湖县",
            "value": 200
          }
        ],
        [
          {
            "name": "金湖县"
          },
          {
            "name": "连云区",
            "value": 55
          }
        ],
        [
          {
            "name": "金湖县"
          },
          {
            "name": "浦口区",
            "value": 55
          }
        ],
        [
          {
            "name": "金湖县"
          },
          {
            "name": "泰兴",
            "value": 55
          }
        ],
        [
          {
            "name": "金湖县"
          },
          {
            "name": "盐都区",
            "value": 55
          }
        ],
        [
          {
            "name": "金湖县"
          },
          {
            "name": "宝应县",
            "value": 55
          }
        ],
        [
          {
            "name": "金湖县"
          },
          {
            "name": "镇江市",
            "value": 55
          }
        ],
        [
          {
            "name": "金湖县"
          },
          {
            "name": "常熟",
            "value": 55
          }
        ],
        [
          {
            "name": "金湖县"
          },
          {
            "name": "开发区",
            "value": 55
          }
        ],
        [
          {
            "name": "金湖县"
          },
          {
            "name": "丰县",
            "value": 55
          }
        ],
        [
          {
            "name": "金湖县"
          },
          {
            "name": "沛县*",
            "value": 55
          }
        ],
        [
          {
            "name": "金湖县"
          },
          {
            "name": "铜山区",
            "value": 55
          }
        ],
        [
          {
            "name": "金湖县"
          },
          {
            "name": "睢宁县",
            "value": 55
          }
        ]
      ],
      "name": [
        "草履蚧",
        "麻皮蝽",
        "扁刺蛾",
        "人纹污灯蛾",
        "霜天蛾",
        "杨扇舟蛾"
      ],
      "one": [
        [
          {
            "name": "徐州"
          },
          {
            "name": "徐州",
            "value": 200
          }
        ],
        [
          {
            "name": "徐州"
          },
          {
            "name": "云龙区",
            "value": 55
          }
        ],
        [
          {
            "name": "徐州"
          },
          {
            "name": "鼓楼区",
            "value": 55
          }
        ],
        [
          {
            "name": "徐州"
          },
          {
            "name": "泉山区",
            "value": 55
          }
        ],
        [
          {
            "name": "徐州"
          },
          {
            "name": "开发区",
            "value": 55
          }
        ],
        [
          {
            "name": "徐州"
          },
          {
            "name": "丰县",
            "value": 55
          }
        ],
        [
          {
            "name": "徐州"
          },
          {
            "name": "沛县",
            "value": 55
          }
        ],
        [
          {
            "name": "徐州"
          },
          {
            "name": "铜山区",
            "value": 55
          }
        ],
        [
          {
            "name": "徐州"
          },
          {
            "name": "睢宁县",
            "value": 55
          }
        ],
        [
          {
            "name": "徐州"
          },
          {
            "name": "邳州市",
            "value": 55
          }
        ],
        [
          {
            "name": "徐州"
          },
          {
            "name": "新沂市",
            "value": 55
          }
        ],
        [
          {
            "name": "徐州"
          },
          {
            "name": "贾汪区(全市)",
            "value": 55
          }
        ]
      ],
      "six": [
        [
          {
            "name": "金湖县"
          },
          {
            "name": "金湖县",
            "value": 200
          }
        ],
        [
          {
            "name": "金湖县"
          },
          {
            "name": "泰兴",
            "value": 55
          }
        ],
        [
          {
            "name": "金湖县"
          },
          {
            "name": "靖江",
            "value": 55
          }
        ],
        [
          {
            "name": "金湖县"
          },
          {
            "name": "江都区",
            "value": 55
          }
        ],
        [
          {
            "name": "金湖县"
          },
          {
            "name": "徐州云龙区",
            "value": 55
          }
        ],
        [
          {
            "name": "金湖县"
          },
          {
            "name": "鼓楼区",
            "value": 55
          }
        ],
        [
          {
            "name": "金湖县"
          },
          {
            "name": "泉山区",
            "value": 55
          }
        ],
        [
          {
            "name": "金湖县"
          },
          {
            "name": "开发区",
            "value": 55
          }
        ],
        [
          {
            "name": "金湖县"
          },
          {
            "name": "丰县",
            "value": 55
          }
        ],
        [
          {
            "name": "金湖县"
          },
          {
            "name": "沛县",
            "value": 55
          }
        ],
        [
          {
            "name": "金湖县"
          },
          {
            "name": "铜山区",
            "value": 55
          }
        ],
        [
          {
            "name": "金湖县"
          },
          {
            "name": "睢宁县",
            "value": 55
          }
        ],
        [
          {
            "name": "金湖县"
          },
          {
            "name": "邳州市",
            "value": 55
          }
        ],
        [
          {
            "name": "金湖县"
          },
          {
            "name": "新沂市",
            "value": 55
          }
        ],
        [
          {
            "name": "金湖县"
          },
          {
            "name": "贾汪区(全市)",
            "value": 55
          }
        ]
      ],
      "three": [
        [
          {
            "name": "东海"
          },
          {
            "name": "东海",
            "value": 200
          }
        ],
        [
          {
            "name": "东海"
          },
          {
            "name": "泰兴",
            "value": 55
          }
        ],
        [
          {
            "name": "东海"
          },
          {
            "name": "宿迁泗阳",
            "value": 55
          }
        ],
        [
          {
            "name": "东海"
          },
          {
            "name": "宿城区",
            "value": 55
          }
        ],
        [
          {
            "name": "东海"
          },
          {
            "name": "江都区",
            "value": 55
          }
        ],
        [
          {
            "name": "东海"
          },
          {
            "name": "云龙区",
            "value": 55
          }
        ],
        [
          {
            "name": "东海"
          },
          {
            "name": "鼓楼区",
            "value": 55
          }
        ],
        [
          {
            "name": "东海"
          },
          {
            "name": "开发区",
            "value": 55
          }
        ],
        [
          {
            "name": "东海"
          },
          {
            "name": "丰县",
            "value": 55
          }
        ],
        [
          {
            "name": "东海"
          },
          {
            "name": "沛县",
            "value": 55
          }
        ],
        [
          {
            "name": "东海"
          },
          {
            "name": "铜山区",
            "value": 55
          }
        ],
        [
          {
            "name": "东海"
          },
          {
            "name": "睢宁县",
            "value": 55
          }
        ],
        [
          {
            "name": "东海"
          },
          {
            "name": "新沂市",
            "value": 55
          }
        ]
      ],
      "two": [
        [
          {
            "name": "宜兴"
          },
          {
            "name": "宜兴",
            "value": 200
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "常州市",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "淮阴区",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "金湖县",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "浦口区",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "六合区",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "玄武区",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "栖霞区",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "靖江",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "宿迁沭阳",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "宿城区",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "宿豫区",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "阜宁",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "大丰",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "东台",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "江都区",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "宝应县",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "扬州市开发区",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "镇江市",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "常熟",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "吴中区",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "昆山",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "吴江",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "苏州高新区",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "太仓",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "丰泾村",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "徐州",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "云龙区",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "鼓楼区",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "泉山区",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "开发区",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "丰县",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "沛县",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "铜山区",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "睢宁县",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "邳州市",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "新沂市",
            "value": 55
          }
        ],
        [
          {
            "name": "宜兴"
          },
          {
            "name": "贾汪区(全市)",
            "value": 55
          }
        ]
      ]
    }
    View Code

    获取对应的格式的代码如下:

    import requests
    def geocode(address):
        parameters = {'address': address, 'key': '3409090984aea93d6ee622ffa4097165'}
        base = 'http://restapi.amap.com/v3/geocode/geo'
        response = requests.get(base, parameters)
        answer = response.json()
        print(answer)
        #print(address + "的经纬度:", answer['geocodes'][0]['location'])
        if answer['geocodes']==[]:
            return "null"
        str = answer['geocodes'][0]['location']
        list = str.split(',')
        newlist = []
        for it in list:
            newlist.append(float(it))
        return newlist
    
    #获取14中昆虫的分布信息场所的迁移图
    @app.route('/getinsectlocation',methods=['GET','POST'])
    def getinsectlocation():
        db = MySqLHelper()
        insects=['草履蚧','麻皮蝽','扁刺蛾','人纹污灯蛾','霜天蛾','杨扇舟蛾']
        names=['one','two','three','four','five','six']
        result={}
        ans={}
        data=[]
        i=0
        for it in insects:
            l=[]
            start=""
            f=0
            sql="select * from insect where name='"+it+"'"
            ret, count = db.selectall(sql=sql)
            area=""
            if count != 0:
                for row in ret:
                    area = row[6]
            list=area.split('')
            for tt in list:
                if tt!="":
                    if f == 0:
                        f = 1
                        start = tt
                    l2=[]
                    vas={"name":start}
                    if start==tt:
                        vas2={"name":tt,"value":200}
                    else:
                        vas2={"name":tt,"value":55}
                    l2.append(vas)
                    l2.append(vas2)
                    l.append(l2)
            ans[names[i]]=l
            i=i+1
        ans["name"]=insects
        print(ans)
        return jsonify(ans)
    View Code

    前台进行相应的数据展示

    function fetchData() {
    
                $.post(
                "/getinsectlocation",
                function(data){
    
                    [[data.name[0], data.one], [data.name[1], data.two], [data.name[2], data.three],[data.name[3], data.four],[data.name[4], data.five],[data.name[5], data.six]].forEach(function (item, i) {
                        //myecharts.hideLoading();
                series.push({
                    name: item[0],
                    type: 'lines',
                    zlevel: 1,
                    effect: {
                        show: true,
                        period: 6,
                        trailLength: 0.7,
                        color: '#fff',
                        symbolSize: 3
                    },
                    lineStyle: {
                        normal: {
                            color: color[i],
                             0,
                            curveness: 0.2
                        }
                    },
                    data: convertData(item[1])
                }, {
                    name: item[0],
                    type: 'lines',
                    zlevel: 2,
                    effect: {
                        show: true,
                        period: 6,
                        trailLength: 0,
                        symbol: planePath,
                        symbolSize: 15
                    },
                    lineStyle: {
                        normal: {
                            color: color[i],
                             1,
                            opacity: 0.4,
                            curveness: 0.2
                        }
                    },
                    data: convertData(item[1])
                }, {
                    name: item[0],
                    type: 'effectScatter',
                    coordinateSystem: 'geo',
                    zlevel: 2,
                    rippleEffect: {
                        brushType: 'stroke'
                    },
                    label: {
                        normal: {
                            show: true,
                            position: 'right',
                            formatter: '{b}'
                        }
                    },
                    symbolSize: function (val) {
                        return val[2] / 8;
                    },
                    itemStyle: {
                        normal: {
                            color: color[i]
                        }
                    },
                    data: item[1].map(function (dataItem) {
                        return {
                            name: dataItem[1].name,
                            value: geoCoordMap[dataItem[1].name].concat([dataItem[1].value])
                        };
                    })
                });
            });
                option.series = series;
    
                // 使用指定的配置项和数据显示图表
                myecharts.setOption(option);
    
                },
                "json"
            );
    
        }

    主函数执行顺序:

    (function () {
    
            myecharts = echarts.init($('.map .geo')[0]);
            myecharts.setOption(option);
            //myecharts.showLoading();
            fetchData();
    
        })();

    成果展示

     遇到的问题

    一开始并没有直接找出对应的city的经纬度值,而是调用高德的接口来获取对应的值,再返回前端进行展示,发现请求量大之后,导致些许数据找不到,进而程序卡死

    这样前台获取不到数据,就无法展示;即使请求到前台,经历的时间也是用户无法等待的。

    解决方法:

    因此,我就写了一个测试接口,获取到所有的昆虫分布城市的经纬度值,将其放到前端,并将一些找不到经纬度的city去掉,避免报错

    一顿流程走完后,数据就可以快捷的展示。

  • 相关阅读:
    机器学习知识点总结(1)
    RPC基本原理
    Oracle中ORA-01113,ORA-01110的简单解决
    跟着whatwg看一遍事件循环
    node进程间通信
    白话协程【前端视角】
    白话typescript中的【extends】和【infer】(含vue3的UnwrapRef)
    原来rollup这么简单之插件篇
    面试官: 说说你对async的理解
    白话web安全
  • 原文地址:https://www.cnblogs.com/xiaofengzai/p/14906044.html
Copyright © 2011-2022 走看看