0

感谢所有帮助我学习至今的人!

我不得不根据客户反馈更改我以前的地图,现在我正在尝试重新创建以下API v3 示例:来自@geocodezip 的融合表层示例:

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);
4

2 回答 2

0

infoWindows 正在被抑制。您的代码中有一个“点击”侦听器会导致它们显示:

  google.maps.event.addListener(layer, "click", function(event) {
    infoWindow.close();
    infoWindow.setContent(event.infoWindowHtml);
    infoWindow.setPosition(event.latLng);
    infoWindow.open(map);
  });
于 2013-08-27T15:55:16.293 回答
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”的正确数值。我通过反复试验做到了。

于 2013-08-27T16:48:28.987 回答