zoukankan      html  css  js  c++  java
  • uniapp 实现echart 地图功能,处理手机端geo缩放问题

    这里需要去下载echart  4.2.0-rc.1版本    https://lib.baomitu.com/echarts/4.2.0-rc.1/echarts.min.js  兼容手机端缩放与点击事件

    先去http://datav.aliyun.com/tools/atlas/#&lat=22.890161256069412&lng=113.423936&zoom=7.5  下载相应的地图,需要切割的在json里面删除

    例如我用的是广东的大湾区的,只切了九个省份,其他的删除后生成一个json

    上实例

    <template>
      <div class="map-box">
        <view  id="echartsmap" class="echart-view"></view>
      </div>
    </template>
    
    <script>
    export default {
      data() {
        return {}
      },
      methods: {
    
      }
    }
    </script>
    
    <script module="echarts" lang="renderjs>
     const jsonData = require('common/gd.json');
    
     var myChart
     export default {
      mounted() {
       if (typeof window.echarts === 'function') {
        this.mYChartmap()
       } else {
        // 动态引入较大类库避免影响页面展示
        const script = document.createElement('script')
        script.src = './static/echarts.min.js'
        script.onload = this.mYChartmap.bind(this)
        document.head.appendChild(script)
    
       }
      },
      methods: {
       mYChartmap() {
        myChart = echarts.init(document.getElementById('echartsmap'))
        echarts.registerMap('广东', jsonData)
            let _that = this
            let newData =  function (name, data){
              return {
                name: name,
                type : 'scatter',//带有涟漪特效动画的散点(气泡)图
                coordinateSystem : 'geo',
                data : [data],
                symbol:'circle',
                symbolSize : 10,
                showEffectOn : 'render',
                rippleEffect : {
                  scale : 5,
                  brushType : 'stroke'
                },
                hoverAnimation : true,
                itemStyle : {
                  normal : {
                    color : function (e){
                      return e.data.color
                    },
                    shadowBlur : 10,
                    shadowColor : '#fff'
                  }
                },
                label : {
                  normal : {
                    formatter : function(a){
                      return a.name;
                    },
                    show : true,
                    position: 'top',
                    padding : 4,
                    textStyle:{
                      color:'#fff'
                    }
                  }
                },
                zlevel : 1
              }
            }
    
            let optionMap = {
              //地图坐标系必备的配置,具体的含义可以参考api
              geo : {
                roam : true,//是否开启缩放和平移
                zoom : .9,//当前视角缩放比例
                selectedMode : 'single',//选中模式
                label : {
                  normal : {
                    show : true,
                    textStyle : {
                      color : '#fff'
                    }
                  },
                  emphasis : {
                    show : true
                  }
                },
                // 设置为一张完整经纬度的世界地图
                map: 'world',
                left: 0,
                top: 0,
                right: 0,
                bottom: 0,
                itemStyle : {//地图区域的多边形 图形样式
                  hoverAnimation : true,
                  normal : {
                    opacity : .8,
                    borderWidth: 1,
                    areaColor: '#5095B3', //默认的地图板块颜色
                    borderColor: '#5095B3',//地图边框颜色
                  },
                  emphasis : {
                    areaColor: '#5095B3', //默认的地图板块颜色
                    borderColor: '#fff',//地图边框颜色
                    opacity : 1
                  }
                }
              },
              series : []
            };
            optionMap.geo.map = '广东';
        myChart.setOption(optionMap)
        myChart.on('click', function(data) {
              _that.navigator(data.name)
        })
       },
       navigator(data){
            uni.navigateTo({
              url: `/pages/day-list/index?city=${data}`,
            });
          }
      }
     }
    </script>
    
    
    <style lang="scss" scoped>
    .map-box{
      margin: 30upx;
      border-radius: 12upx;
      overflow: hidden;
      box-shadow: 0px 8upx 20px 4px rgba(39, 165, 249, 0.08);
    }
    .echart-view{
       100%;
      height: 400upx;
    }
    </style>
    

      

    效果图如下

    这里要注意:生成的json,echart读取的时候有个name ,本实例用的是广东 ,代码里面需要把两处名称统一,否则地图不出现

    echarts.registerMap('广东', jsonData)    

    optionMap.geo.map = '广东';

  • 相关阅读:
    下标处理问题
    C++输入输出流
    gcc和gdb
    B2C、C2C电子商务分析
    转载:java 动态代理学习(Proxy,InvocationHandler)
    Java Web开发中路径问题小结
    64位操作系统IIS降为32 位版本运行处理
    SQL Server 2000/2005 数据库分页
    iBatis简单入门教程
    JAVA中的Class类
  • 原文地址:https://www.cnblogs.com/hpx2020/p/14272395.html
Copyright © 2011-2022 走看看