感谢所有帮助我学习到目前为止!
我必须根据客户反馈更改以前的地图,我现在正尝试重新创建以下 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);
答案 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”找到正确的数值。我是通过反复试验来做到的。