使用点击监听器在Google Fusion Map infowindow中启用target = _'parent'

时间:2012-11-15 20:05:06

标签: html google-maps google-maps-api-3 google-fusion-tables

我对Google Fusion很陌生,但热衷于学习。 我创建了一个地图,自定义了infowindow并使用FusionTablesLayer向导将地图嵌入到我的网站上,以创建一个托管在同一个域上的脚本。这样做,我认为可以使用target = _parent作为infowindow中的链接,而不是令人讨厌的target = _blank命令。 从那以后我发现,由于安全性,你必须添加一个点击监听器才能得到trget = _parent工作,这就是我的能力停止的地方。 任何人都可以帮我启用监听器,配置infowindow,最重要的是,让target = _parent工作。

这是一些代码,我希望你可以使用。

信息窗口:

<div class='googft-info-window' style='font-family:Georgia, sans-serif' "width: 250px;" >
<base target="_parent" />
<b><a href="{info-URL} " ">{Skole}</a></b></b><br>
<i>Åbner i ny fane/nyt vindue</i><br><br>
{Adresse}<br><br>
<b>Elevtal:</b> {Elevtal}<br>
<b>Rang 2010/2011:</b> {Rangering til kort}/107<br><br>
<b>Gennemsnit 2010/2011</b><br>
<b>Dansk:</b> {Dansk total}<br>
<b>Engelsk:</b> {Engelsk total}<br>
<b>Fysik/kemi:</b> {Fysik/kemi total}<br>
<b>Matematik:</b> {Matematik total}<br><br>
<b>Samlet gennemsnit:</b> {Skolegennemsnit}<br><br>
{NOTE}<br><br>
<a href="{Skole-URL}" target=_blank>Hjemmeside</a>
</div>

FusionTablesLayer向导代码

<!DOCTYPE html>
<html>
  <head>
<base target="_parent" />
  <style>
    #map-canvas { width:700px; height:400px; }
  </style>
  <script type="text/javascript"
    src="http://maps.google.com/maps/api/js?sensor=false">
  </script>
  <script type="text/javascript">
    var map;
    var layerl0;
    function initialize() {
      map = new google.maps.Map(document.getElementById('map-canvas'), {
        center: new google.maps.LatLng(57.17199198214385, 9.771527295703208),
        zoom: 8
      });
      var style = [
        {
          featureType: 'all',
          elementType: 'all',
          stylers: [
            { saturation: 9 }
          ]
        }
      ];
      var styledMapType = new google.maps.StyledMapType(style, {
        map: map,
        name: 'Styled Map'
      });
      map.mapTypes.set('map-style', styledMapType);
      map.setMapTypeId('map-style');
      layerl0 = new google.maps.FusionTablesLayer({
        query: {
          select: "'col2'",
          from: 'table-id'
        },
        map: map,
        styleId: -1,
        templateId: 1
      });
    }
    google.maps.event.addDomListener(window, 'load', initialize);
  </script>
  </head>
  <body>
    <div id="map-canvas"></div>
  </body>
</html>

地图现在在www.skoleguide.net处于在线状态,并且我从here

获得了点击监听器的灵感

我真的希望,那里有人可以帮助我

Jens Skriver Steffensen

1 个答案:

答案 0 :(得分:1)

要将“target = _parent”添加到FusionTables的预先存在的内容中,这样的内容应该有效:

var newContent = e.infoWindowHtml.replace("/<a /<a target='_parent' /g");

使用google.maps.addListener方法

添加点击聆听您的FusionTable

这样的事情应该有效:

  //add a click listener to the layer
  google.maps.event.addListener(layer10, 'click', function(e) {
    //update the content of the InfoWindow
    var newContent = e.infoWindowHtml.replace("/<a /<a target='_parent' /g");
    infowindow.setOptions({
       content: newContent,
   pixelOffset: e.pixelOffset,
   position: e.latLng
   });
    infowindow.open(map);
  });      

请务必通过向FusionTablesLayer构造函数添加“suppressInfoWindows:true”选项来禁用默认的infowindows。

Working Example