查找页面上存在的传单地图对象,没有变量引用

问题描述 投票:2回答:2

我有一个浏览器插件的想法,该插件可以操纵第三方站点上的Leaflet地图。但是,我很简单:我不确定如何在页面上发现Leaflet映射DOM元素,然后访问关联的Leaflet map对象。

  1. $('.leaflet-container')是查找所有地图对象的可靠方法吗?

  2. 如何从该对象实际访问map对象,所以我可以做类似的事情:$('.leaflet-container').eachLayer(...),这不起作用。

此问题与How can I get a leaflet.js instance using only a DOM object?本质上相同,但答案是没有解决方法,无济于事。

javascript dom leaflet introspection
2个回答
4
投票
  1. 是的,这应该足够了,尽管这不是记录在案的行为,并且至少在理论上可以在以后的Leaflet版本中进行更改
  2. 无法执行此操作。对该地图的引用归创建该地图的代码所有,它可能已丢弃它,或者可能将其存储在您无权访问的位置。传单本身不会在您可以访问的任何地方存储对地图的引用]
  3. 在旁注中,我认为您应该让代码的用户明确地将引用传递给您,而不是尝试自动查找引用。例如,参见inversion of control principle,其中调用方提供了相关性。 Law of Demeter在某种程度上也适用-请勿窥探其他代码内部结构(除非您确实必须如此)。


0
投票

好,所以这是一个可行的解决方案,但它很脆弱且受限制。如果您有一种方法可以更直接地找到参考,那是理想的。

© www.soinside.com 2019 - 2024. All rights reserved.