Echarts地图局部放大及返回实例

1、引用重点

①、echarts.min.js
②、地图Json

2、实例解析

在这里插入图片描述
在这里插入图片描述
【路径关系】:
在这里插入图片描述

var haerbin = 'json/haerbin.json';
var achengMap = 'json/sub-map/acheng.json';
var bayanMap = 'json/sub-map/bayan.json';
var binxianMap = 'json/sub-map/binxian.json';
var daoliMap = 'json/sub-map/daoli.json';
var daowaiMap = 'json/sub-map/daowai.json';
var fangzhengMap = 'json/sub-map/fangzheng.json';
var hulanMap = 'json/sub-map/hulan.json';
var mulanMap = 'json/sub-map/mulan.json';
var nangangMap = 'json/sub-map/nangang.json';
var pingfangMap = 'json/sub-map/pingfang.json';
var shangzhiMap = 'json/sub-map/shangzhi.json';
var shuangchengMap = 'json/sub-map/shuangcheng.json';
var songbeiMap = 'json/sub-map/songbei.json';
var tongheMap = 'json/sub-map/tonghe.json';
var wuchangMap = 'json/sub-map/wuchang.json';
var xiangfangMap = 'json/sub-map/xiangfang.json';
var yanshouMap = 'json/sub-map/yanshou.json';
var yilanMap = 'json/sub-map/yilan.json';
var mapname = haerbin;
var mapJson = [
    {name: '阿城区', json: achengMap},
    {name: '巴彦县', json: bayanMap},
    {name: '宾县', json: binxianMap},
    {name: '道里区', json: daoliMap},
    {name: '道外区', json: daowaiMap},
    {name: '方正县', json: fangzhengMap},
    {name: '呼兰区', json: hulanMap},
    {name: '木兰县', json: mulanMap},
    {name: '南岗区', json: nangangMap},
    {name: '平房区', json: pingfangMap},
    {name: '尚志市', json: shangzhiMap},
    {name: '双城区', json: shuangchengMap},
    {name: '松北区', json: songbeiMap},
    {name: '通河县', json: tongheMap},
    {name: '五常县', json: wuchangMap},
    {name: '香坊区', json: xiangfangMap},
    {name: '延寿县', json: yanshouMap},
    {name: '依兰县', json: yilanMap},
];


    let myCharts = echarts.init(document.getElementById('main'));
    var mapData = [ // 地图数据
        {name: '方正县', value: 20},
        {name: '道里区', value: 15},
        {name: '阿城区', value: 11},
        {name: '呼兰区', value: 12}
    ];
    var sanData = [ // 散点数据
        {name: '方正县', value: 20},
        {name: '道里区', value: 15},
        {name: '阿城区', value: 11},
        {name: '呼兰区', value: 12}

    ];
    var geoCoordMap = { // 散点坐标
        '方正县': [128.836131,45.839536],
        '道里区': [126.612532,45.762035],
        '阿城区': [126.972726,45.538372],
        '呼兰区': [126.603302,45.98423]
    };
$('<div id="back" class="back">〈 返回</div>').appendTo($('#main'));
$('.back').css({
    position: 'absolute',
    left: '17px',
    top: '25px',
    color: 'rgb(222,222,222)',
    'font-size': '12px',
    cursor: 'pointer',
    border: '1px solid rgba(255, 255, 255, .5)',
    padding: '0px 6px 1px 0px',
    'border-radius': '3px',
    'z-index': '100',
    visibility: 'hidden'

});
    var convertData = function (data) { // 处理数据函数
        var res = [];
        for (var i = 0; i < data.length; i++) {
            var geoCoord = geoCoordMap[data[i].name];
            if (geoCoord) {
                res.push({
                    name: data[i].name,
                    value: geoCoord.concat(data[i].value)
                });
            }
        }
        return res;
    };
    var mapInit = () =>$.get(mapname,function(yCjson){

        echarts.registerMap('haerbin', yCjson, {});

        let option = { // echarts 配置
            tooltip: {
                trigger: 'item'
            },
            geo: { // 地图配置
                show: true,
                map: 'haerbin',
                label: {
                    normal: {
                        show: false
                    },
                    emphasis: {
                        show: false
                    }
                },
                roam: false,
                itemStyle: {
                    normal: {
                        areaColor: '#47D1FF',
                        borderColor: '#3B5077'
                    },
                    emphasis: {
                        areaColor: '#2B91B7'
                    }
                },
                zoom: 1.2
            },
            series: [{ // 散点配置
                name: '数量',
                type: 'effectScatter',
                coordinateSystem: 'geo',
                data: convertData(sanData),
                symbolSize: function (val) {
                    return val[2];
                },
                showEffectOn: 'emphasis',
                rippleEffect: {
                    brushType: 'stroke'
                },
                hoverAnimation: true,
                label: {
                    normal: {
                        formatter: '{b}',
                        position: 'right',
                        show: false
                    },
                    emphasis: {
                        show: true
                    }
                },
                itemStyle: {
                    normal: {
                        color: '#ff8003'
                    }
                }
            }, { // 地图配置
                name: '工程数',
                type: 'map',
                mapType: 'haerbin', // 自定义扩展图表类型
                geoIndex: 0,
                // aspectScale: 0.75, // 长宽比
                itemStyle: {
                    normal: {label: {show: true}},
                    emphasis: {label: {show: true}}
                },
                data: mapData
            }]
        };
        myCharts.setOption(option);
    });
    myCharts.on('click', function (e) {
        var chooseName = mapJson.filter((item) => {
            return item.name == e.name;
        });
        mapname = chooseName[0].json;

        alert("初始化本区域大屏幕数据");
        mapDate = [{name: '哈市第一医院', value: [126.61686, 45.75567]}];


        $('.back').css({
            visibility: 'visible'
        });
        $('.back').click(function () {
            mapname = haerbin;
            mapDate = [
                {name: '哈市第一医院', value: [126.61686, 45.75567]}
            ];
            $('.back').css({
                visibility: 'hidden'
            });
            alert("重新初始化数据");

            mapInit();
        });
        mapInit();
    });
    mapInit();

核心就是写一个“返回”按钮 然后css设置隐藏 点击事件触发控制隐藏开关+小地图替换haerbin地图

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在小程序中使用echarts地图进行放大缩小操作,可以通过以下步骤实现: 1. 引入echarts库:在小程序的页面中引入echarts库,可以通过npm安装或者直接引入CDN链接。 2. 创建canvas:在小程序的wxml文件中创建一个canvas标签,并设置宽高和id属性。 3. 获取canvas实例:在小程序的js文件中,通过wx.createCanvasContext方法获取canvas的上下文对象。 4. 初始化echarts:使用echarts.init方法初始化echarts实例,并将canvas的上下文对象传入。 5. 设置地图配置:通过echarts.setOption方法设置地图的配置项,包括地图类型、数据等。 6. 监听手势事件:通过canvas的touchstart、touchmove、touchend事件监听用户的手势操作。 7. 处理手势事件:根据用户手势的变化,调用echarts实例的setOption方法更新地图的缩放比例。 下面是一个示例代码: ```javascript // wxml文件 <canvas id="map" style="width: 100%; height: 100%;"></canvas> // js文件 const echarts = require('echarts'); Page({ onLoad: function () { const ctx = wx.createCanvasContext('map'); const chart = echarts.init(ctx); // 设置地图配置 const option = { // 地图配置项 }; chart.setOption(option); // 监听手势事件 let touchStartDistance = 0; let touchMoveDistance = 0; let scale = 1; let lastScale = 1; wx.onTouchStart((e) => { if (e.touches.length === 2) { touchStartDistance = this.getDistance(e.touches); } }); wx.onTouchMove((e) => { if (e.touches.length === 2) { touchMoveDistance = this.getDistance(e.touches); scale = touchMoveDistance / touchStartDistance * lastScale; chart.setOption({ geo: { zoom: scale } }); } }); wx.onTouchEnd(() => { lastScale = scale; }); }, // 计算两个触摸点之间的距离 getDistance(touches) { const x1 = touches.clientX; const y1 = touches.clientY; const x2 = touches.clientX; const y2 = touches.clientY; return Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)); } }); ``` 这样就可以在小程序中使用echarts地图进行放大缩小操作了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值