关于Leaflet 地图 遮罩反选

关于Leaflet 地图 遮罩反选

最近项目用到leaflet作为地图开发插件,需要将某个区域突出显示,其余部分隐藏,之前做过百度地图的开发,有过类似的经验,就简单写一下作为记录。

leaflet 地图插件

leaflet:https://leafletjs.com/
下边就直接进入主题:
1.初始化地图

//加载地图
function initMap() {
   if(!page.map){
       page.map = L.map("allmap", {
           renderer: L.canvas(),
           attributionControl: false,
           zoomControl: true,
           maxZoom: 18,
           minZoom: 4
       }).setView([31.144674, 121.3555383], 15);
   }

   var baseLayer = L.tileLayer('http://webst0{s}.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}', {
       subdomains: ["3", "4"]
   });
   
   var GoogleLayer1 = L.tileLayer(
       'http://mt0.google.cn/vt/lyrs=m@160000000&hl=zh-CN&gl=CN&src=app&y={y}&x={x}&z={z}&s=Ga',
       {
           attribution: '© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
       });

   var baseLayers = {
       "谷歌地图" : GoogleLayer1,
       "卫星地图" : baseLayer
   };
   L.control.layers(baseLayers).addTo(page.map);
   GoogleLayer1.addTo(page.map);
   //L.tileLayer("http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png").addTo(page.map);
   L.control.coordinates({
       decimals: 5,
       decimalSeperator: ",",
       labelTemplateLat: "纬度: {y}",
       labelTemplateLng: "经度: {x}",
       enableUserInput: false
   }).addTo(page.map);
   readTownJosn();
}
  1. 获取要绘制区域的json文件
//加载显示区域的边界
function readTownJosn() {
   var url = "/assets/json/map/leaflet/qibao/leaflet_zhenjie.json";
   var jhLine;
   api.invoke(url, {}, 'GET', function (json) {
       jhLine = L.geoJSON(json, {style: {color: "#6495ED",weight:8,fillColor:'',fillOpacity:0.00001}});
       jhLine.addTo(page.map);
       drawBoundary(json.features[0].geometry.coordinates);
   });
}
  1. 绘制遮罩层;
//绘制遮罩层的思路是根据百度地图的逻辑来的,leaflet也可通用
//反选 添加外部边界
function drawBoundary(blist) {
   /*画遮蔽层的相关方法
    *思路: 首先在中国地图最外画一圈,圈住理论上所有的中国领土,然后再将每个闭合区域合并进来,并全部连到西北角。
    *      这样就做出了一个经过多次西北角的闭合多边形*/
   //定义中国东南西北端点,作为第一层
   var pNW = { lat: 59.0, lng: 73.0 };
   var pNE = { lat: 59.0, lng: 136.0 };
   var pSE = { lat: 3.0, lng: 136.0 };
   var pSW = { lat: 3.0, lng: 73.0 };
   //向数组中添加一次闭合多边形,并将西北角再加一次作为之后画闭合区域的起点
   var pArray = [];
   pArray.push(pNW);
   pArray.push(pSW);
   pArray.push(pSE);
   pArray.push(pNE);
   pArray.push(pNW);
   //循环添加各闭合区域
   for (var i = 0; i < blist.length; i++) {
       var points = [];
       $.each(blist[i],function(k,v){
           points.push({lat:v[1],lng:v[0]});
       });
    //将闭合区域加到遮蔽层上,每次添加完后要再加一次西北角作为下次添加的起点和最后一次的终点
       pArray = pArray.concat(points);
       pArray.push(pArray[0]);
   }
   //添加遮蔽层
   var plyall = L.polygon(pArray, { color:'transparent',fillColor:'#C0C0C0',fillOpacity:0.8 }); //建立多边形覆盖物
   plyall.addTo(page.map);
}
  1. 至此,leaflet 的反选功能已完成,效果如下图
    在这里插入图片描述
    时间比较紧,写的比较粗糙,有问题我们可以继续讨论。
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
leaflet地图风场是利用leaflet.js这个JavaScript库来展示风场数据的一种技术。风场数据包括风速和风向,通过可视化展示在地图上的方式,提供了直观且易于理解的风场信息。 leaflet.js是一个轻量级的地图库,可以实现在网页上展示交互式地图。它具有简洁的API接口和丰富的插件支持,非常适合用于构建交互式地图应用。通过leaflet地图风场技术,我们可以将风场数据与地图相结合,实现在地图上显示风速和风向的效果。 leaflet地图风场的实现过程一般包括以下几个步骤: 1. 数据准备:首先需要获取风场数据,通常是通过气象数据源获取到的。这些数据包括了风速和风向的信息。可以将这些数据转换成leaflet可识别的格式,如GeoJSON格式。 2. 创建地图:使用leaflet.js库创建一个地图容器,并设置初始的地图中心点、缩放级别等。 3. 添加风场图层:利用leaflet的图层功能,将风场数据添加到地图上。可以使用插件或自定义的方式来实现。 4. 风场可视化:对风场数据进行可视化处理,通常是将风速和风向信息转换成箭头、色阶等形式展示在地图上。可以利用leaflet的样式设置功能来实现。 5. 交互功能:为了增强用户体验,通常还可以添加一些交互功能,如鼠标悬停显示具体数值、点击风场图层显示风场数据的详细信息等。 通过leaflet地图风场技术,我们可以直观地了解不同地区的风场情况,对风能利用等方面提供支持。因其容易上手、功能丰富和灵活性强等特点,越来越多的人开始使用leaflet地图风场来展示和分析风场数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值