22

我正在为学校制作一个项目,我需要根据传单地图中的缩放级别调整标记图标的大小,有没有简单的方法来完成这个?网上有教程吗?在此先感谢您的帮助!!!

4

2 回答 2

27

为了在放大/缩小时更改标记的大小,您需要处理该事件。

map.on('zoomend', function() { });

zoomend只要地图完成放大或缩小,就会调用该事件。请参阅此处的 API 。

现在,在此函数中,您可以调用自定义代码来更改标记的大小。例如,假设您想采用一种简单的方法并将圆形标记的大小设置为地图缩放级别的大小。在此处查看 CircleMarker 的 API

// Create some marker that will be resized on the map zooming
var myMarker = new L.CircleMarker([10,10], { /* Options */ });

map.on('zoomend', function() {
  var currentZoom = map.getZoom();
  myMarker.setRadius(currentZoom);
});

现在,无论何时放大或缩小地图,标记的大小都会发生变化。

于 2013-07-01T11:24:43.580 回答
6

我不确定 Stophace 指的是关于 circleMarkers 不改变大小的内容,但是,添加到批准的答案......如果你想调整 circleMakers 的大小或更改任何其他样式选项(我发现改变权重和半径很有帮助),您可以使用以下方法:

    map.on('zoomend', function() {
        var currentZoom = map.getZoom();
        var myRadius = currentZoom*(1/2); //or whatever ratio you prefer
        var myWeight = currentZoom*(1/5); //or whatever ratio you prefer
            layername.setStyle({radius: myRadius, weight: setWeight});
    });

layername将替换为包含 circleMarkers 的任何层的名称......当然,您可以根据自己的需要更改分数。

我猜OP的学校项目已经完成,但我希望这可以帮助其他有同样问题的人!

于 2016-07-08T19:59:01.187 回答