初始化后查找Leaflet地图对象

时间:2017-07-31 09:26:58

标签: javascript leaflet mediawiki

我尝试使用Leaflet library在已经由其他脚本初始化的地图上更改某些内容。这个其他脚本没有将map-object存储在全局变量中,也不存储在我可以使用我的脚本访问的任何其他位置。所以目前我的页面上有一张地图,但我没有地图对象。

我想要做的是检索已经初始化的地图的对象,以对其进行更改。例如,如果存在函数L.getMap('myID'),我想使用这样的方法来检索链接到容器myID的地图对象。

TL; DR:有没有办法使用容器的id来获取已初始化的传单地图的地图对象?

2 个答案:

答案 0 :(得分:11)

对于记录,如果你有可能在初始化地图之前注入/执行一些JS代码(即在"其他脚本"执行之前),你可以很容易地自定义Leaflet以保持参考每个创建的地图。

E.g。使用L.Map类上的addInitHook constructor hook

// Before map is being initialized.
var mapsPlaceholder = [];

L.Map.addInitHook(function () {
  mapsPlaceholder.push(this); // Use whatever global scope variable you like.
});

// "Other script", can be in its own separate <script> and JS file.
L.map('mapId'); // The map object is pushed into `mapsPlaceholder` array.

// Then retrieve the map object to further manipulate the map.
var map = mapsPlaceholder.pop();

演示:https://plnkr.co/edit/mywpSbfRPFOnJ8c1RNsZ?p=preview

答案 1 :(得分:1)

您可以从mediawiki扩展程序创建的全局数组访问地图。

Es:用于访问页面的第一个地图

window.maps.leafletList[0].map.getCenter()