Javascript 初始化后查找传单映射对象

Javascript 初始化后查找传单映射对象,javascript,leaflet,mediawiki,Javascript,Leaflet,Mediawiki,我正在尝试更改已由另一个脚本初始化的地图上的某些内容,使用。另一个脚本没有将映射对象存储在全局变量中,也没有存储在我可以使用脚本访问的任何其他位置。所以目前我的页面上有一个地图,但我没有地图对象 我想做的是检索已经初始化的映射的对象,对其进行更改。例如,如果存在一个函数L.getMap('myID'),我想使用这种方法来检索链接到容器myID的映射对象 TL;DR:是否有方法使用容器id获取已初始化传单地图的地图对象?您可以从mediawiki扩展创建的全局数组访问地图 Es:用于访问页面的第一

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

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


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

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

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

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

作为记录,如果您有可能在映射初始化之前(即在“其他脚本”执行之前)注入/执行一些JS代码,您可以非常轻松地自定义传单,以保留对每个创建映射的引用

例如,在
L.Map
class上使用:

//在初始化映射之前。
var mapsPlaceholder=[];
L.Map.addInitHook(函数(){
push(this);//使用您喜欢的任何全局范围变量。
});
//“其他脚本”,可以在自己单独的JS文件中。
L.map('mapId');//地图对象被推入“mapsPlaceholder”数组。
//然后检索贴图对象以进一步操作贴图。
var map=mapsPlaceholder.pop();

演示:

如何初始化地图?其他脚本是什么?@FabianoTaioli我正在使用MediaWiki扩展加载地图。我尝试查看该扩展的代码,但它似乎没有将
map
变量存储在任何可访问的位置。我没有使用Mediawiki地图扩展的经验,但是我发现这表明
窗口.Maps
变量是使用地图列表创建的。我不知道这是否包含映射对象,或者只是一个映射列表(将被启动)…在映射初始化之前,您是否有可能执行一些JS?谢谢您的回答!这看起来是一个非常优雅的解决方案。我将把我公认的答案留给法比亚诺,因为这将是我将要使用的方法,但这看起来是一个更普遍适用的解决方案。谢谢你发布这个!明亮的很好!谢谢。我得到一个
类型错误:window.maps未定义
@Rajesh:你在使用TypeScript吗?如果是这样的话,请随意提出一个新问题,详细说明您的具体问题。