在没有实例的情况下处理jQuery Google Maps对象

时间:2014-03-03 14:34:35

标签: javascript google-maps dom kml jquery-widgets

我正在尝试将KML图层添加到现有的Google地图对象,而无法控制对象实例(并初始化)。

到目前为止,我发现对象位于(DOM): window.google.maps ... (好吧,这只是构造函数,而不是渲染的Map对象本身)

这是我要添加到google.maps.Map对象的现有(?)实例的内容:

var kmlUrl = 'http://.../polygon-simple.kml';

var kmlOptions = {
  suppressInfoWindows: false,
  preserveViewport: true
};

var kmlLayer = new window.google.maps.KmlLayer(kmlUrl, kmlOptions);

包含Map对象的页面由托管公司提供,并使用它自己的jQuery小部件来生成对象。我可以在html-body中添加我的javascript(也会发生地图的“服务器端”创建)。

由于我无法更改已使用的JS文件和CMS添加的JS的源代码,因此我需要解决现有对象并执行以下操作:

kmlLayer.set(obj.Map);

应用我的添加内容并更新Map对象。但它显然不起作用。

我对整个网站进行了抨击,并试图找到由jQuery小部件生成的Map实例 - 没有。我浏览了网站上的每个对象 - 没有。

完全靠我自己编写Google Map的代码是不可取的,因为我需要在后端为非开发人员配置它。

我想这个问题会转向jQuery小部件问题......提前谢谢!

1 个答案:

答案 0 :(得分:0)

window.google.maps.Map不是地图对象,它是所述对象的构造函数。对象本身位于另一个城堡(变量)中。

obj instanceof google.maps.Map 
如果对象是googlemaps Map对象,则

应返回true。如果你真的找不到变量,你可以编写一个循环,递归遍历页面上的所有对象,找到返回true的对象。

作为chrome调试器中的旁注,Map对象如下所示: map

它说地图类型是“em”,这是相当奇怪的,这是因为GoogleMaps库缩小了