【问题标题】:Google Maps with kml layer. Google adds _blank to info window links带有 kml 图层的谷歌地图。 Google 将 _blank 添加到信息窗口链接
【发布时间】:2014-02-27 14:49:20
【问题描述】:

第一次在这里提问。编码新手,所以要温柔。

我有这个谷歌地图,我通过一个 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>

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

【问题讨论】:

    标签: google-maps kml infowindow


    【解决方案1】:

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

    我猜target="_blank" 是清洗的一部分,它应该防止离开当前页面。

    可能有不同的选项来删除target,最简单的应该是在信息窗口打开之前操作infoWindowHtml

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

    【讨论】:

    • 感谢您的回答,但它不起作用。即使添加了一些代码,链接上仍然存在 _blank。我在 之前插入了它 - 正确还是应该放到其他地方?
    • 你必须把它放在可以访问googlectaLayer的地方:jsfiddle.net/doktormolle/ryTr6
    猜你喜欢
    • 2018-06-05
    • 2012-04-19
    • 1970-01-01
    • 2013-08-04
    • 2017-11-14
    • 1970-01-01
    • 2013-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多