Fusion Tables&带侧边栏的地图:非洲地图样本中的数字到加密ID

时间:2013-08-27 14:03:46

标签: javascript google-maps-api-3 google-fusion-tables sidebar

感谢所有帮助我学习到目前为止!

我必须根据客户反馈更改以前的地图,我现在正尝试重新创建以下 API v3示例:来自@geocodezip的Fusion Tables Layer 示例:

http://www.geocodezip.com/v3_FusionTables_AfricaMap_kml_sidebar.html

我已经仔细地复制并粘贴并将原始代码更改为我的页面,但我遇到了以下问题:

a。)infoWindows没有被抑制,也没有创建新的;

b。)点击侧边栏中的项目对地图没有影响。

我的猜测是它与新的查询语法和加密的ID有关,而示例代码(非洲地图)则基于数字ID。我想我已经把它搞砸了。

我的问题是:如何更改/更新我的代码以使我的地图功能像非洲地图示例一样?谢谢!

我的地图: http://hepac.ca/map/

我的融合表: https://www.google.com/fusiontables/data?docid=1DxjRqzjtC7-Oryt8N9ZaJ0n1IXRllDjodnbEJYo

 

我认为相关的代码:

function createSidebar() {
  // https://www.google.com/fusiontables/api/query?sql=SELECT%20ROWID,%20%2A%20FROM%20564705

  //set the query using the parameter
  var queryText = encodeURIComponent("http://www.google.com/fusiontables/gvizdata?tq=SELECT * FROM 1DxjRqzjtC7-Oryt8N9ZaJ0n1IXRllDjodnbEJYo");
  var query = new google.visualization.Query(queryText);
  var queryText = encodeURIComponent("SELECT 'Description', 'Network', 'Contact', 'Email', 'Latitude', 'Longitude' FROM 1DxjRqzjtC7-Oryt8N9ZaJ0n1IXRllDjodnbEJYo");
  var query = new google.visualization.Query('http://www.google.com/fusiontables/gvizdata?tq='  + queryText);


  //set the callback function
  query.send(getData);

}

layer = new google.maps.FusionTablesLayer({
      query: {
        select: "col2",
        from: "1DxjRqzjtC7-Oryt8N9ZaJ0n1IXRllDjodnbEJYo",
        where: ""
      },
      suppressInfoWindows: true
    });  

  layer.setMap(map);

2 个答案:

答案 0 :(得分:0)

infoWindows正在被压制。有一个'点击'代码中的监听器,导致它们显示:

  google.maps.event.addListener(layer, "click", function(event) {
    infoWindow.close();
    infoWindow.setContent(event.infoWindowHtml);
    infoWindow.setPosition(event.latLng);
    infoWindow.open(map);
  });

答案 1 :(得分:0)

我的Javascript错误似乎与我从Fusion Table调用的列数有关。做了这些修复,它工作正常:

var queryText = encodeURIComponent("SELECT 'Description', 'Network', 'Contact', 'Website', 'Email', 'Latitude', 'Longitude' FROM 1DxjRqzjtC7-Oryt8N9ZaJ0n1IXRllDjodnbEJYo");

以及后来:

function myFTclick(row) {
   var Description = FTresponse.getDataTable().getValue(row,0);
   var Network = FTresponse.getDataTable().getValue(row,1);
   var Contact = FTresponse.getDataTable().getValue(row,3);
   var Email = FTresponse.getDataTable().getValue(row,4);
   var lat =  FTresponse.getDataTable().getValue(row,5);
   var lng =  FTresponse.getDataTable().getValue(row,6);
   var position = new google.maps.LatLng(lat, lng);

我能够通过播放列值来运行它 - 例如.getValue(row,x) - 虽然我不知道如何为“x”找到正确的数值。我是通过反复试验来做到的。