LeafletJS-图层组

news/2024/7/19 14:30:54 标签: js, javascript, gis

图层组

使用图层组,可以将多个图层添加到地图并将其作为单个图层进行管理。

请按照下面给出的步骤创建一个LayerGroup并将其添加到地图中。

步骤1-通过传递< div >元素(字符串或对象)和地图选项(可选)来创建地图对象。

步骤2-通过传递所需图块的URL 创建一个Layer对象。

第3步 -使用Map类的addLayer()方法将图层对象添加到地图

步骤4-通过实例化如下所示的各个类,创建所需的元素(层),例如标记,多边形,圆形等。

<span style="color:rgba(0, 0, 0, 0.87)">// Creating markers
var hydMarker = new L.Marker([17.385044, 78.486671]);
var vskpMarker = new L.Marker([17.686816, 83.218482]);
var vjwdMarker = new L.Marker([16.506174, 80.648015]);

// Creating latlng object
var latlngs = [
   [17.385044, 78.486671],
   [16.506174, 80.648015],
   [17.686816, 83.218482]
];
// Creating a polygon
var polygon = L.polygon(latlngs, {color: 'red'});
</span>

步骤5-使用l.layerGroup()创建图层组。传递上面创建的标记,多边形等,如下所示。

<span style="color:rgba(0, 0, 0, 0.87)">// Creating layer group
var layerGroup = L.layerGroup([hydMarker, vskpMarker, vjwdMarker, polygon]);
</span>

步骤6-使用addTo()方法添加在上一步中创建的图层组。

<span style="color:rgba(0, 0, 0, 0.87)">// Adding layer group to map
layerGroup.addTo(map);
</span>

以下代码创建一个包含3个标记和一个多边形的图层组,并将其添加到地图中。

<span style="color:rgba(0, 0, 0, 0.87)"><!DOCTYPE html>
<html>
   <head>
      <title>Leaflet Layer Group</title>
      <link rel = "stylesheet" href = "http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css"/>
      <script src = "http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script>
   </head>
   
   <body>
      <div id = "map" style = "width: 900px; height: 580px"></div>
      <script>
         // Creating map options
         var mapOptions = {
            center: [17.385044, 78.486671],
            zoom: 7
         }
         var map = new L.map('map', mapOptions); // Creating a map object
         
         // Creating a Layer object
         var layer = new L.TileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png');
         map.addLayer(layer);      // Adding layer to the map
         
         // Creating markers
         var hydMarker = new L.Marker([17.385044, 78.486671]);
         var vskpMarker = new L.Marker([17.686816, 83.218482]);
         var vjwdMarker = new L.Marker([16.506174, 80.648015]);
         
         // Creating latlng object
         var latlngs = [
            [17.385044, 78.486671],
            [16.506174, 80.648015],
            [17.686816, 83.218482]
         ];
         // Creating a polygon
         var polygon = L.polygon(latlngs, {color: 'red'});
         
         // Creating layer group
         var layerGroup = L.layerGroup([hydMarker, vskpMarker, vjwdMarker, polygon]);
         layerGroup.addTo(map);    // Adding layer group to map
      </script>
   </body>
   
</html></span>

它生成以下输出-

js/images/layergroup_map.jpg" width="600" />

 

添加层(元素)

您可以使用addLayer()方法将图层添加到要素组。对于此方法,您需要传递要添加的元素。

您可以在城市海得拉巴的中心添加一个圆圈。

<span style="color:rgba(0, 0, 0, 0.87)">// Creating a circle
var circle = L.circle([16.506174, 80.648015], 50000, {color: 'red', fillColor:
   '#f03', fillOpacity: 0} );

// Adding circle to the layer group
layerGroup.addLayer(circle);
</span>

它将产生以下输出。-

js/images/add_layergroup_map.jpg" />

 

删除图层(元素)

您可以使用removeLayer()方法从要素组中删除图层。对于此方法,您需要传递要删除的元素。

您可以如下图所示删除标记为Vijayawada的城市上的标记。

<span style="color:rgba(0, 0, 0, 0.87)">// Removing layer from map
layerGroup.removeLayer(vjwdMarker);
</span>

它将产生以下输出-

js/images/remove_layer_map.jpg" />

 

功能组

它类似于LayerGroup,但是它允许鼠标事件并将弹出窗口绑定到它。您也可以使用setStyle()方法将样式设置为整个组。

请按照以下步骤创建要素组并将其添加到地图。

步骤1-通过传递< div >元素(字符串或对象)和地图选项(可选)来创建地图对象。

步骤2-通过传递所需图块的URL 创建一个Layer对象。

第3步 -使用Map类的addLayer()方法将图层对象添加到地图

步骤4-通过实例化如下所示的类来创建所需的元素(层),例如标记,多边形和圆形。

<span style="color:rgba(0, 0, 0, 0.87)">// Creating markers
var hydMarker = new L.Marker([17.385044, 78.486671]);
var vskpMarker = new L.Marker([17.686816, 83.218482]);
var vjwdMarker = new L.Marker([16.506174, 80.648015]);

// Creating latlng object
var latlngs = [
   [17.385044, 78.486671],
   [16.506174, 80.648015],
   [17.686816, 83.218482]
];
// Creating a polygon
var polygon = L.polygon(latlngs, {color: 'red'});>
</span>

步骤5-使用l.featureGroup()创建功能组。传递上面创建的标记,多边形等,如下所示。

<span style="color:rgba(0, 0, 0, 0.87)">// Creating feature group
var featureGroup = L.featureGroup([hydMarker, vskpMarker, vjwdMarker, polygon]);
</span>

步骤6-如果您将样式设置为要素组,它将应用于该组中的每个元素(图层)。您可以使用setStyle()方法执行此操作,并且需要将此方法传递给选项,例如颜色和不透明度等。

将样式设置为在以上步骤中创建的要素组。

<span style="color:rgba(0, 0, 0, 0.87)">// Setting style to the feature group
featureGroup.setStyle({color:'blue',opacity:.5});
</span>

步骤7-使用bindPopup()方法绑定弹出窗口,如下所示。

<span style="color:rgba(0, 0, 0, 0.87)">// Binding popup to the feature group
featureGroup.bindPopup("Feature Group");
</span>

步骤8-使用addTo()方法添加在上一步中创建的功能部件组。

<span style="color:rgba(0, 0, 0, 0.87)">// Adding layer group to map
featureGroup.addTo(map);
</span>

以下代码创建一个包含3个标记和一个多边形的要素组,并将其添加到地图中。

<span style="color:rgba(0, 0, 0, 0.87)"><!DOCTYPE html>
<html>
   <head>
      <title>Leaflet Feature Group</title>
      <link rel = "stylesheet" href = "http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css"/>
      <script src = "http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script>
   </head>
   
   <body>
      <div id = "map" style = "width:900px; height:580px"></div>
      <script>
         // Creating map options
         var mapOptions = {
            center: [17.385044, 78.486671],
            zoom: 7
         }
         var map = new L.map('map', mapOptions); // Creating a map object
         
         // Creating a Layer object
         var layer = new L.TileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png');
         map.addLayer(layer);      // Adding layer to the map
         
         // Creating markers
         var hydMarker = new L.Marker([17.385044, 78.486671]);
         var vskpMarker = new L.Marker([17.686816, 83.218482]);
         var vjwdMarker = new L.Marker([16.506174, 80.648015]);
         
         // Creating latlng object
         var latlngs = [
            [17.385044, 78.486671],
            [16.506174, 80.648015],
            [17.686816, 83.218482]
         ];
         var polygon = L.polygon(latlngs, {color: 'red'}); // Creating a polygon
         
         // Creating feature group
         var featureGroup = L.featureGroup([hydMarker, vskpMarker, vjwdMarker, polygon]);
         featureGroup.setStyle({color:'blue',opacity:.5});
         featureGroup.bindPopup("Feature Group");
         featureGroup.addTo(map);      // Adding layer group to map
      </script>
   </body>
   
</html></span>

它生成以下输出-

js/images/featuregroup_map.jpg" />

 


http://www.niftyadmin.cn/n/1372105.html

相关文章

LeafletJS-事件处理

Leaflet JavaScript程序可以响应用户生成的各种事件。在本章中&#xff0c;我们将提供一些示例&#xff0c;展示如何在使用Leaflet时执行事件处理。 事件处理 请按照以下步骤将事件添加到地图。 步骤1-通过传递< div >元素&#xff08;字符串或对象&#xff09;和地图…

LeafletJS-Overlay

除了地图叠加层&#xff0c;您还可以在Leaflet应用程序中使用图像&#xff0c;视频叠加层。在本章中&#xff0c;我们将看到如何使用这些叠加层。 图像叠加 请按照下面给出的步骤使用图像叠加层。 步骤1-通过传递< div >元素&#xff08;字符串或对象&#xff09;和地…

在Docker中部署PostgreSQL+PostGIS

如果你愿意通过Docker运行PostgreSQL&#xff0c;我们建议使用与PostGIS捆绑在一起的Kartoza的Docker recipe作为扩展。 在5432端口&#xff08;或任何端口&#xff09;上创建名为postgrest_tut的Docker Postgres容器。 sudo docker run--name“postgrest_tut”-p5432:5432-e …

五分钟实现地理空间API:PostgREST+PostGIS

如何用PostgREST、PostgreSQL和PostGIS构建强大的空间restapi&#xff1f; 以往我们在使用PostGIS做空间分析或者需要前端进行WFS或者空间分析的时候&#xff0c;可能会使用GeoServer发布图层&#xff0c;或者用Geotools自定义&#xff0c;但是使用 如何用PostgREST就不需要了&…

PostGIS系统表之SPATIAL_REF_SYS

在PostGIS中最重要的两张OGC 元数据表:SPATIAL_REF_SYS和GEOMETRY_COLUMNS。 SPATIAL_REF_SYS表保存空间数据库中使用的坐标系统的数字ID和文本描述。 如我们最常用的WGS84坐标系代号为EPSG:4326。 SPATIAL_REF_SYS表和空间参考系统 spacear_ref_sys表是一个包含PostGIS且符…

在PostGIS中表达复杂几何对象是如何定义的

PostGIS符合开放地理空间联盟(OGC)的OpenGIS规范。因此,许多PostGIS方法要求进行操作的几何既简单又有效。例如,计算在多边形外部定义了孔的多边形的面积,或者根据非简单边界线构造多边形是没有意义的。 根据OGC规范,简单几何是没有异常几何点(例如自相交或自相切)的几…

PostGIS中的拓扑关系及函数(一)

PostGIS提供了若干拓扑关系函数&#xff0c;本文介绍如下函数&#xff1a; 1. ST_3DIntersects #相交 2. ST_Contains #包含 3. ST_ContainsProperly #完全包含 4. ST_Covers #覆盖 5. ST_CoveredBy #被覆盖 6. ST_Crosses #空间…

PostGIS中的拓扑关系及函数(二)

PostGIS提供了若干拓扑关系函数&#xff0c;本文介绍如下函数&#xff1a; 1. ST_LineCrossingDirection #线之间的交叉方向 2. ST_Disjoint #不相交 3. ST_Equals #相等ST_LineCrossingDirection-线之间的交叉方向 定义 integer ST_LineCrossin…