Her*_*ill 5 jquery google-maps kml
我正在使用KML在Google地图上叠加形状.对应于每个形状的信息包括在<description>元素中,以及指向与该形状对应的细节页面的链接.
例如,我的KML包括:
<description>
<![CDATA[
<div>
...
<p>
<a href="Concession.20.aspx">View details</a>
</p>
</div>
]]>
Run Code Online (Sandbox Code Playgroud)
当然,我希望该链接在同一个窗口中打开,因为它只是导航到同一站点上的另一个页面.不幸的是,如此处所述,嵌入在<description>KML文件元素中的链接将被重写target='_blank'.
当包含在直接写入KML的HTML中时,目标会被忽略; 打开所有这些链接,就好像目标设置为_blank一样.忽略任何指定的目标.
我的问题:任何人都可以想到一个可以覆盖这个(令人讨厌的,恕我直言)行为并强制在同一窗口中打开这些链接的解决方法吗?
作为一种方法的一个例子,我目前正在尝试覆盖这些链接上的click事件(使用jQuery),但它们是由Google地图动态生成的,我似乎无法及早掌握它们.
小智 6
我无法让这些例子起作用.最后我在jQuery中做了这个,它在点击后立即打开链接.
$('#map_canvas').delegate('a', 'click', function(event) {
window.location.href=$(this).attr('href');
return false;
});
Run Code Online (Sandbox Code Playgroud)
我想出了一个使用 jQuery 和地图infowindowopen事件的可行解决方案。这是地图的初始化代码:
map = new google.maps.Map2(document.getElementById("map"));
...
GEvent.addListener(map, "infowindowopen", function() {
// Get a reference to the infoWindow
var infoWindow = $(this.getInfoWindow().getContentContainers());
// Find all <a> tags in the infoWindow and reset their target attribute
$("a", infoWindow).attr("target", "_self");
});
Run Code Online (Sandbox Code Playgroud)