标签: leaflet

标记边界数组的居中地图[单张]

我正在使用Leaflet来标记一系列标记.我正在使用MarkerCluster插件来创建集群.我现在正在做什么我将地图的视图设置为我的数组的第一点.我要做的就是使地图居中,以便用户可以在地图加载时查看所有点/群集.

我的阵列看起来像m = [L.Marker, L.Marker,...].我将每个添加到我的群集组,如:

var markers = L.MarkerClusterGroup();
for(var i = 0; i < m.length; i++){
     markers.addLayer(m[i]);
}
Run Code Online (Sandbox Code Playgroud)

javascript jquery leaflet

0
推荐指数
1
解决办法
3816
查看次数

使用传单热图控制热图的不透明度

我正在使用 Leaflet.js ,热图插件。

有一个叫做 L.heatLayer 的小类(源代码https://github.com/Leaflet/Leaflet.heat/blob/gh-pages/src/HeatLayer.js

没有不透明度选项

选项只有

options: {
maxZoom: 18,
radius: 25,
blur: 15,
max: 1.0},
Run Code Online (Sandbox Code Playgroud)

有什么办法可以使用此 Leaflet.js heatLayer 控制不透明度?非常感谢

javascript heatmap leaflet

0
推荐指数
1
解决办法
1722
查看次数

当使用传单地图将标记排列在阵列中时,如何在标记单击上打开弹出窗口

大家好,我有一组标记是在.each循环上动态创建的,就像这样。

$.each(data, function(index, element) {
    markerArr[element.id] = L.marker(map.unproject([element.LocationX,element.LocationY],map.getMaxZoom()-4)).addTo(map);
});
Run Code Online (Sandbox Code Playgroud)

我的问题是如何在单击时为每个弹出窗口打开弹出窗口,并在弹出窗口中显示唯一ID?

如果要像这样用唯一的名称声明每个标记,则可以执行此操作。

var marker1 = L.marker([158,395]).addTo(mapl);
var marker2 = L.marker([158,410]).addTo(mapl);
marker1.bindPopup("Kanye West");
marker1.on('click', function (e) {
    this.openPopup();
});
marker2.bindPopup("50 Cent");
marker2.on('click', function (e) {
    this.openPopup();
});
Run Code Online (Sandbox Code Playgroud)

但是我需要能够打开数组中的所有标记。

尝试这样的事情没有运气

markerArr[this].on('click', function (e) {
    this.openPopup();
});
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。

谢谢。

javascript leaflet mapbox

0
推荐指数
1
解决办法
3550
查看次数

传单:如何计算从中心点到边缘的距离

我正在使用传单绘制控件获取某些区域的几何图形。这些几何图形是多边形、线串、矩形和圆形,我将它们放入数据库中。我想获得从中心点到这些几何图形边缘的距离。

在此处输入图片说明

我正在使用https://github.com/mapbox/leaflet-omnivore以这种方式解析几何:

var layer = omnivore.wkt.parse(geometry);
var center = layer.getBounds().getCenter();
Run Code Online (Sandbox Code Playgroud)

我不知道如何获得从中心到边缘的距离。是否可以?

geometry leaflet mapbox

0
推荐指数
1
解决办法
4140
查看次数

传单点击功能

因此,我正在尝试使用带有 geojson 的传单作为坐标来映射公交路线。我在一个方面遇到了困难,点击后,总线线路被加粗,理想情况下,最后一次点击的功能会返回到默认样式。

到目前为止我所拥有的

function $onEachFeature(feature, layer) {
   layer.on({
    click: function(e) {
        //calls up the feature clicked on
        var $layer = e.target;

        var highlightStyle = {
            opacity: 1,
            weight: 5
        };

        $layer.bringToFront();
        $layer.setStyle(highlightStyle);
    }
 }); 
}

//imagine all the leaflet map tile code here

//this is where the features get added in and the $oneachfeature function
var busFeature = L.geoJson(busRoutes, {
     style: defaultBusRouteColor,
     onEachFeature : $onEachFeature
});

busFeature.addTo(map);
Run Code Online (Sandbox Code Playgroud)

上面,我现在成功地将功能的样式更改为highlightStyle. 但是,当单击另一个特征时,该样式将保留。如何删除之前单击的要素样式,以便一次只有一个要素具有该样式highlightStyle

我已经尝试过的事情:使用 addClass/removeClass 到 jQuery 方法,layer.resetStyle() …

javascript css jquery geojson leaflet

0
推荐指数
1
解决办法
6039
查看次数

给定中心和正方形宽度的传单正方形

在 Leaflet 上,给定中心和半径,我可以轻松创建一个新圆:

// Circle
var radius = 500; // [metres]
var circleLocation = new L.LatLng(centreLat, centreLon);
var circleOptions = {
    color: 'red',
    fillColor: '#f03',
    fillOpacity: 0.5
};
var circle = new L.Circle(circleLocation, radius, circleOptions);
map.addLayer(circle);
Run Code Online (Sandbox Code Playgroud)

上面的圆是创建和绘制的,没有问题,就这样了。

但是,如果我现在想创建并绘制一个包围圆的矩形,则它不起作用。这是我所做的:

// Rectangle
var halfside = radius;   // It was 500 metres as reported above
// convert from latlng to a point (<-- I think the problem is here!)
var centre_point = map.latLngToContainerPoint([newCentreLat, newCentreLon]);
// Compute SouthWest and NorthEast points
var sw_point = …
Run Code Online (Sandbox Code Playgroud)

javascript latitude-longitude leaflet angular-leaflet-directive

0
推荐指数
1
解决办法
3057
查看次数

如何使用传单和Javascript在地图上添加图像

我正在寻找一种使用Javascript将图像添加到"传单地图"的方法.

我想要做的是加载图像,调整其大小和位置,并将其附加到传单地图.

javascript leaflet leaflet.draw

0
推荐指数
1
解决办法
7394
查看次数

当模态处于活动状态时,传单贴图仍然存在.为什么?

我正在开发一个使用Leaflet.js创建地图的Web应用程序,使用Vue.js来管理应用程序,使用Bulma for CSS.

Bulma有一个"模态"元素,当它的类设置为时,它应该出现在其他所有元素的前面is-active.我有这个工作,除了地图不会像页面的其余部分一样淡入背景.

我对模态知之甚少.有没有人知道为什么地图会在其他一切消失的情况下仍然可见?谢谢!!

我的网络应用程序激活了Bulma模式. 宣传单地图拒绝淡入背景.

javascript modal-dialog leaflet vue.js bulma

0
推荐指数
1
解决办法
190
查看次数

如何将CSS媒体查询的结果传递给JS?

我有一个JS变量来控制页面的样式。我希望它根据屏幕分辨率进行更改。如何使它取决于CSS媒体查询的结果。

我知道我可以直接在JS中检查屏幕分辨率,但是我想将所有样式决定保留在CSS内,而不是将其散布在JS和CSS文件中。

为避免XY问题:我正在使用Leaflet,而JS变量决定是否折叠了列出可用图层的任何地图控制面板。它应该在小屏幕(移动设备)上折叠而不是在大屏幕(适当的显示器)上折叠。

相关代码如下

html,
body {
  height: 100%;
  margin: 0;
}

#map {
  width: 600px;
  height: 400px;
}

@media (min-width: 1000px) {
  #map {
    width: 1000px;
    height: 900px;
  }
}
Run Code Online (Sandbox Code Playgroud)
<!DOCTYPE html>
<html>
<!--based on https://leafletjs.com/examples/layers-control/ example -->

<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="https://unpkg.com/leaflet@1.3.3/dist/leaflet.css" integrity="sha512-Rksm5RenBEKSKFjgI3a41vrjkw4EVPlJ3+OiI65vTjIdo9brlAacEuKOiQ5OFh7cOI1bkDwLqdLw3Zg0cRJAAQ==" crossorigin="" />
  <script src="https://unpkg.com/leaflet@1.3.3/dist/leaflet.js" integrity="sha512-tAGcCfR4Sc5ZP5ZoVz0quoZDYX5aCtEm/eu1KhSLj2c9eFrylXZknQYmxUssFaVJKvvc0dJQixhGjG2yXWiV9Q==" crossorigin=""></script>
  <link rel="stylesheet" href="example.css" />
</head>

<body>
  <div id='map'></div>
  <script>
    var positron = L.tileLayer('https://cartodb-basemaps-{s}.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png', {
        attribution: '#{openstreetmap_copyright_notice}, basemap: &copy; <a href=\"http://cartodb.com/attributions\">CartoDB</a>',
        subdomains: 'abcd',
        maxZoom: …
Run Code Online (Sandbox Code Playgroud)

html javascript css leaflet

0
推荐指数
2
解决办法
149
查看次数

从Leaflet Map R删除国家等名称

您知道如何从R的传单地图中删除国家/地区名称吗?

leaflet(quakes) %>% addTiles()
Run Code Online (Sandbox Code Playgroud)

我想要清晰的地图,没有文字

r leaflet

0
推荐指数
1
解决办法
318
查看次数