我尝试使用Leaflet library在已经由其他脚本初始化的地图上更改某些内容。这个其他脚本没有将map-object存储在全局变量中,也不存储在我可以使用我的脚本访问的任何其他位置。所以目前我的页面上有一张地图,但我没有地图对象。
我想要做的是检索已经初始化的地图的对象,以对其进行更改。例如,如果存在函数L.getMap('myID')
,我想使用这样的方法来检索链接到容器myID
的地图对象。
TL; DR:有没有办法使用容器的id来获取已初始化的传单地图的地图对象?
答案 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();
答案 1 :(得分:1)
您可以从mediawiki扩展程序创建的全局数组访问地图。
Es:用于访问页面的第一个地图
window.maps.leafletList[0].map.getCenter()