我使用的是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);
行,我可能需要调整。