zoukankan      html  css  js  c++  java
  • leaflet聚合图功能(附源码下载)

    前言

    leaflet 入门开发系列环境知识点了解:

    • leaflet api文档介绍,详细介绍 leaflet 每个类的函数以及属性等等
    • leaflet 在线例子
    • leaflet 插件,leaflet 的插件库,非常有用

    内容概览

    leaflet聚合图功能
    源代码demo下载

    效果图如下:

    本篇主要参考leaflet官网聚合效果插件Leaflet.markercluster: https://github.com/Leaflet/Leaflet.markercluster
    这个聚合插件具体使用看github地址,那里有详细说明以及例子。

    • 模拟数据geojson格式如下:
    var geojson = {"type":"FeatureCollection", "features": [
    {"type":"Feature","geometry":{"type":"Point","coordinates":[113.16305738210656,23.13667404697526]},"properties":{"Name_CHN":"赤岗塔","StationNum":1,"Status":1}},
    {"type":"Feature","geometry":{"type":"Point","coordinates":[113.18383377370634,23.100037587172096]},"properties":{"Name_CHN":"海心沙","StationNum":2,"Status":1}},
    ……
    ]};
    • 放大地图到一定级别,根据模拟数据的属性值Status不同,对应不同类型的图标:
    //根据Status类型不同加载不同图标
    var img = './img/projectPoint_HGX.png';
    switch(properties.Status) {
    case 1:
    img = './img/projectPoint_HGX.png';
    break;
    case 2:
    img = './img/projectPoint_JSZT.png';
    break;
    case 3:
    img = './img/projectPoint_XMXZ.png';
    break;
    case 4:
    img = './img/projectPoint_XMZS.png';
    break;
    }
    var myIcon = L.icon({
    iconUrl: img,
    iconSize: [25, 25],
    });
    var marker = L.marker(new L.LatLng(coordinate[1], coordinate[0]), {
    properties: properties,
    icon: myIcon,
    });
    • 部分核心代码,完整的见源码demo下载
    var map = L.map('map');
    L.tileLayer('http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}').addTo(map);
    map.setView(L.latLng(22.95186415, 113.90271877), 9); //设置缩放级别及中心点
     
    //聚合图
    var projectPointLayer = L.markerClusterGroup({
    showCoverageOnHover: false,
    zoomToBoundsOnClick: true,
    chunkedLoading: true,
    maxClusterRadius: 40, //默认80
    }).addTo(map);
     
    if (geojson) {
    addProjectClusterLayers(geojson, projectPointLayer);
    projectPointLayer.on("click", function (e) {
    e.layer.unbindPopup();
    var elements = getProjectPopupContent(
    e.layer.options.properties
    );
    e.layer.bindPopup(elements[0]).openPopup(e.latlng);
    });
    }
     
    /*
    * 点单击内容函数
    */
    function getProjectPopupContent(item) {
    const { toPopupItemStr } = this;
    const me = this;
    // 内容及单击事件
    const elements = $(
    `<div>
    ${toPopupItemStr("名称", item.Name_CHN)}
    ${toPopupItemStr("站口个数", item.StationNum)}
    <a class="edit">详情</a>&nbsp;
    </div>`
    );
    return elements;
    }
     
    // 转为popup项
    function toPopupItemStr(name, value){
    return value ? `<b>${name}:</b>${value}<br>` : "";
    };
     
    /*
    * 加载聚合图层
    */
    function addProjectClusterLayers(geojson, clusterlayer) {
    var markerList = [];
    if (geojson.features.length > 0) {
    for (var i = 0; i < geojson.features.length; i++) {
    if (geojson.features[i].geometry) {
    var properties = geojson.features[i].properties;
    var coordinate = geojson.features[i].geometry.coordinates;
    //根据Status类型不同加载不同图标
    var img = './img/projectPoint_HGX.png';
    switch(properties.Status) {
    case 1:
    img = './img/projectPoint_HGX.png';
    break;
    case 2:
    img = './img/projectPoint_JSZT.png';
    break;
    case 3:
    img = './img/projectPoint_XMXZ.png';
    break;
    case 4:
    img = './img/projectPoint_XMZS.png';
    break;
    }
    var myIcon = L.icon({
    iconUrl: img,
    iconSize: [25, 25],
    });
    var marker = L.marker(new L.LatLng(coordinate[1], coordinate[0]), {
    properties: properties,
    icon: myIcon,
    });
    markerList.push(marker);
    }
    }
    }
    clusterlayer.addLayers(markerList);
    };

    完整demo源码见小专栏文章尾部: 小专栏

    文章尾部提供源代码下载,对本专栏感兴趣的话,可以关注一波

    查看全文
  • 相关阅读:
    dom 获取节点练习
    dom 节点的添加删除 与修改
    dom document属性练习
    ArrayList 去除重复元素
    ud类型聊天
    UDP数据发送
    指定标签所在div在新窗口打开
    日期Calendar
    Seraph介绍
    U盘cmd命令行修复
  • 原文地址:https://www.cnblogs.com/giserhome/p/12727092.html
  • 最新文章
  • 数据库 基础知识(2)
    js去空格函数(方法)
    php面试题4
    params ref和out 枚举 面向对象
    关于淘宝跳失率
    php面试题1
    数据库基础知识(4)
    php面试题3
    数据库基础知识(1)
    vj p1589题解
  • 热门文章
  • 第一篇
    建设围墙 (wall.pas)题解
    ubuntu shell编程
    Lambda Expression概念浅析
    LINQ中的Lambda表达式
    LINQ中Lambda表达式
    测试你的杀毒软件有效的最好办法!
    谈谈C#中的三个关键词new , virtual , override(装载 Winner.Net)
    Eclipse安装aptana
    枚举
Copyright © 2011-2022 走看看

PHP网站源码光明网站定制大浪网站推广宝安建站大浪关键词按天扣费布吉模板制作龙岗百姓网标王大运关键词排名包年推广罗湖网站优化软件丹竹头网站推广工具光明百度竞价包年推广观澜SEO按效果付费木棉湾网站优化软件南澳网络营销布吉百姓网标王广州网站建设设计福田网站优化福永标王坂田网站优化按天收费福田网站改版观澜模板制作民治网站优化西乡网站推广工具观澜营销型网站建设南联高端网站设计盐田网站排名优化龙岗SEO按天收费爱联网站制作东莞英文网站建设吉祥网站优化软件宝安SEO按天扣费歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化