javascript 初始化后查找瓣叶Map对象

taor4pac  于 2023-03-16  发布在  Java
关注(0)|答案(3)|浏览(105)

我正在尝试使用Leaflet library修改一个已经被另一个脚本初始化的map。这个脚本没有把map对象存储在全局变量中,也没有存储在我可以使用脚本访问的任何其他位置。所以目前我的页面上有一个map,但是我没有map对象。
我想做的是检索一个已经初始化的map的对象,并对其进行修改。例如,如果存在一个函数L.getMap('myID'),我想使用这样的方法来检索链接到容器myID的map对象。
TL;DR:是否有办法使用容器的id来获取已经初始化的传单Map的Map对象?

xytpbqjk

xytpbqjk1#

为了记录在案,如果您有可能在Map初始化之前(即在“其他脚本”执行之前)注入/执行一些JS代码,您可以非常容易地定制Leaflet,以保持对每个创建的Map的引用。
例如,在L.Map类上使用addInitHook构造函数挂钩:

// 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

njthzxwz

njthzxwz2#

您可以从mediawiki扩展创建的全局数组中访问Map。
Es:用于访问页面的第一个Map

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

polkgigr3#

如果您使用的是leaflet for WordPress plugin,您可以按如下方式访问map:

window.WPLeafletMapPlugin.maps[0];

相关问题