【问题标题】:Mapbox,leaflet: Increase marker size on ZoomMapbox,传单:在缩放时增加标记大小
【发布时间】:2016-02-17 20:45:22
【问题描述】:

当我们放大地图时,如何增加所有标记的大小? 我知道我们可以使用map.on('zoomend', function() {}); 并更改函数内的图标大小。但是我有很多标记,并且遍历所有标记并单独更改它们似乎不是一个好主意。

【问题讨论】:

  • 哈哈@IvanSanchez。 Deepak,这不是 Stackoverflow 想要看到的问题。需要更多的努力,例如,您是如何尝试自己解决的?你的研究结果是什么?您尝试了哪些解决方案?为什么它不起作用?你得到了什么错误?等等。请花几分钟时间阅读:stackoverflow.com/help/how-to-ask 然后回来编辑您的问题。

标签: leaflet mapbox


【解决方案1】:

在每个zoomend 事件上循环一组标记并没有错。为什么这听起来不是个好主意?

循环标记的另一种方法是扩展L.Marker 类来为您完成工作,例如:

L.Marker.Autoresizable = L.Marker.extend({

    onAdd: {
        map.on('zoomend', this._changeIcon, this);
    },

    onRemove: function(map) {
        map.off('zoomend', this._changeIcon, this);
    },

    _changeIcon: function(ev) {
        var zoom = this._map.getZoom();

        if (zoom <= 10) {
            this.setIcon(...);
        } elseif (zoom > 10 && zoom <= 15) {
            this.setIcon(...);
        } else {
            this.setIcon(...);
        }

    }

});

L.marker.autoresizable = function(latlng, options) {
    return new L.Marker.Autoresizable(latlng, options);
}

在这种情况下,Leaflet 代码将隐式循环遍历 zoomend 事件的所有事件侦听器,这与循环遍历标记几乎相同(性能方面)。

【讨论】:

    猜你喜欢
    • 2020-07-16
    • 2018-04-13
    • 1970-01-01
    • 2022-10-18
    • 2022-07-08
    • 2011-04-06
    • 2012-08-25
    • 2023-01-09
    • 1970-01-01
    相关资源
    最近更新 更多