带有kml图层的Google地图。 Google将_blank添加到信息窗口链接

时间:2014-02-27 14:49:20

标签: google-maps kml infowindow

第一次在这里提问。所有新编码都是温和的。

我有这张谷歌地图,我通过kml文件插入~70个标记,其中包含地图信息窗口的一些信息。这一切都很好。

但是,当我向信息窗口添加链接时,Google会以某种方式将“target =”_ blank“'添加到这些链接中,使其在新窗口中打开。但是我希望链接在同一个窗口中打开。有没有办法做到这一点?

我正在使用的代码:

<script type="text/javascript">
function initialize() {
var mapOptions = {center: new google.maps.LatLng(56.100, 10.000), zoom: 8};
var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
var ctaLayer = new google.maps.KmlLayer({url: 'link-to-my.kml'});
ctaLayer.setMap(map); }
google.maps.event.addDomListener(window, 'load', initialize);
</script>

我在kml文件中的信息如下所示:

<Placemark>
<styleUrl>#icon-981</styleUrl>
<name>Some name</name>
<description><![CDATA[<a href="link.html">Click this</a>]]></description>
<Point>
<coordinates>8.450037000000066,55.477908,0.0</coordinates>
</Point>
</Placemark>

所以,基本上问题是:如何在同一个窗口中打开这些链接?

1 个答案:

答案 0 :(得分:1)

<description/>将被清理以防止滥用(请注意,KMLLayer也可能被其他资源使用,例如它可能会加载到maps.google.com中,因此他们必须确保它不会包括恶意代码。)

我想target="_blank"是清理的一部分,它应该阻止离开当前页面。

删除target可能有不同的选项,最简单的应该是在InfoWindow打开之前操纵infoWindowHtml

  google.maps.event.addListener(ctaLayer,'click',function(e){
    e.featureData.infoWindowHtml 
     = e.featureData.infoWindowHtml.replace(/target="_blank"/g,'');
  })