使用Google Maps API和Fusion Tables创建指向其他页面的多边形链接

时间:2015-01-02 20:16:07

标签: javascript google-maps google-fusion-tables

我试图弄清楚如何将Google Fusion表格创建的Google地图多边形(整个多边形)设置为指向其他网页的可点击链接。我原本以为要在多边形中添加一个事件监听器并使用"这个"但是我忘记了那不起作用,因为我没有生成多边形,融合表是。如果有人能指出我正确的方向或帮助它将非常感谢!

到目前为止我所拥有的是融合表的正常代码:

var map;
var layer_1;

function initialize() {
  map = new google.maps.Map(document.getElementById('map-canvas'), {
    center: new google.maps.LatLng(33.205, -97.1325),
    zoom: 11,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  });

  layer_1 = new google.maps.FusionTablesLayer({
    suppressInfoWindows: true,
    query: {
      select: "col0",

      from: "/*Fustion Table ID*/",

    },
    map: map,
    styleId: 2,
    templateId: 2
  });

}

google.maps.event.addDomListener(window, 'load', initialize);

我在想我可以添加一个监听器,例如:

google.maps.event.addListener(polygon, 'click', function (event) {
     //Find the polygon's website URL
    });  

并使用它来触发页面重定向,例如

window.location.replace(...)

或多或少地使多边形成为一个巨大的链接,但我被建议不要这样做。

2 个答案:

答案 0 :(得分:1)

FusionTableLayer有一个FusionTablesMouseEvent,其row属性中包含该行该行的所有信息:

  

行|宾语。 | FusionTablesCell对象的集合,按列名索引,表示包含所单击特征的表行的内容。)

像这样使用它(确切的代码取决于您尚未共享的表格):

layer_1 = new google.maps.FusionTablesLayer({
    suppressInfoWindows: true,
    query: {
      select: "col0",

      from: "/*Fustion Table ID*/",

    },
    map: map,
    styleId: 2,
    templateId: 2
  });
google.maps.event.addListener(layer_1, 'click', function(evt) {
   // code to open the URL based on the data in that row of your fusion table
});

答案 1 :(得分:0)

这是我最终使用的代码,以防任何人寻找类似的东西:

var map;
var layer_1;

function initialize() {
  map = new google.maps.Map(document.getElementById('map-canvas'), {
    center: new google.maps.LatLng(33.205, -97.1325),
    zoom: 11,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  });

  layer_1 = new google.maps.FusionTablesLayer({
    suppressInfoWindows: true,
    query: {
      select: "col0",

      from: "*** Fusion Table Idea goes here ***",

    },
    map: map,
    styleId: 2,
    templateId: 2
  });

  google.maps.event.addListener(layer_1, 'click', function(evt) {
   var url = evt.row.website.value;
   console.log(url);
   window.location = url;
  });

}


google.maps.event.addDomListener(window, 'load', initialize);