2013-10-09 122 views
0

我试图在MapBox中重写grid_control.js以允许来自gridControl的多个工具提示同时出现在同一个框中。向mapbox.js添加功能

gridControl因此激活:

var gridLayer = L.mapbox.gridLayer('example-map.sdfagg22gd'); 
var tileLayer = L.mapbox.tileLayer('example-map.sdfagg22gd') 
map.addLayer(tileLayer); 
map.addLayer(gridLayer); 
map.addControl(L.mapbox.gridControl(gridLayer));  

不是重写源代码,但是,我想延长GridControl类,使代码与未来mapbox.js版本更兼容。

var GridControl = L.Control.extend({ 

options: { 
    pinnable: true, 
    follow: false, 
    sanitizer: require('sanitize-caja'), 
    touchTeaser: true, 
    location: true 
}, 

我应该怎么做,这是可取的?

此外,有关如何允许在同一时间几个工具提示的任何想法?我需要一个计数器来处理有效的工具提示并根据这些提示重做所有操作?任何指针将不胜感激。

据我所知,并发工具提示的可能性是可能的,因为带有工具提示内容的两个单独框将出现{follow : false}选项。但是,如何将它变成以鼠标为中心的移动工具提示(由{follow: true}激活)?

回答

0

简单:

// get gridControl object and pass it for modification 
var gridControl = L.mapbox.gridControl(gridLayer, {follow:true}); 

// modify the prototype 
gridControl.__proto__._onPopupClose = function() { 
    this._currentContent = null; 
    this._lastContent = null; 
    this._pinned = false; 
};