停止mapbox.js / leaflet.js工具提示重新渲染每个mousemove?

时间:2015-07-24 10:45:23

标签: javascript leaflet mapbox

我使用的是Mapbox.js 2.2.1,它主要基于Leaflet.js。我已经使用一些借用的代码在mousemove上为我的要素图层添加了一些自定义工具提示。

它们似乎没问题,但是它们会在每个鼠标移动时重新渲染,这会产生非常不稳定的效果:

    _this.orgLayer.eachLayer(function(layer) {
        var closeTooltip;
        layer.on('mousemove', function(e) {
            var layerData = e.target.feature.properties.data;
            var layer = e.target;
            var html = data.name + ' ' + data.date;
            this.popup.setLatLng(e.latlng);
            this.popup.setContent(html);
            // need to adapt this next line...?
            if (!this._map) this.popup.openOn(this.map);
            window.clearTimeout(closeTooltip);
            if (!L.Browser.ie && !L.Browser.opera) {
                layer.bringToFront();
            }
        }, _this);
        layer.on('mouseout', function(e) {
            var _this = this;
            closeTooltip = window.setTimeout(function() {
               _this.map.closePopup();
            }, 100);
        }, _this);
    });

我宁愿只在每个鼠标移动时重置latlng。我究竟做错了什么?

我认为密钥可能在if (!this._map) this.popup.openOn(this.map);行,我可能需要调整。

0 个答案:

没有答案