google maps api 3 - 如何打开infowindow,对于来自FusionTables的多边形,点击html元素

时间:2012-04-11 06:39:30

标签: maps infowindow

所以我遇到了问题;我有google api 3代码,它调用2个Fusion表,现在我想添加一些可点击的html元素,当点击时,他们会从融合表调用某些多边形并自动打开它们(已经定制的)infowindows。

我的代码在这里: http://jsfiddle.net/zVaGN/1/

我希望得到这样的效果: http://econym.org.uk/gmap/example_egeotestmon.htm

我一直在看这个代码而我找不到解决方案因为我不熟练编码。我需要一些函数,通过调用一些proprety(融合表中的列)从fusiontable调用一个层,然后当用户点击一个html元素时,弹出特定层的infowindow。

请帮帮我们!

更新: 单击poylgon时已经可以获得infowindow,但是我希望得到infowindow在点击另一个html元素时打开的效果,请看一下这个例子: jsfiddle.net/zVaGN 在这里,我把链接放在地图之前的顶部,上面写着“Sisak”,现在我希望当我点击这个链接时,这个多边形的信息窗口(在我的fusiontalbe中名为Sisak)会弹出。这可能吗?

更新2: 所以我已经拥有了我在Fusiontables中制作的自定义infowindows,我只希望函数使用fusiontable值查询html元素中的值并调用infowindow弹出窗口?你了解,所以我有我的多边形,我有每个多边形的自定义信息窗口,现在我想制作一个除我的googlemap之外的HTML列表,以便当用户点击侧边栏列表中的特定名称时,那么它的信息窗口polygon popsup?

我已经尝试过这个代码,它可以调用在fusiontables中制作的infowindow,但我不会工作。这是google api:

    function izbor() {
var infowindow = google.maps.FusionTablesLayer({
    });
infowindow.open(map);

}

稍后在html的主体中我尝试实现这个功能:

<div style="position:absolute; top:700px; left:100px;" >
<a href="#" title="Sisak" value="Sisak" onclick="izbor()">Sisak</a><br />
</div>

但不会发生

我也尝试过这段代码来调用在fusiontables中创建的infowindow,它有一个div class =“googft-info-window”:

function izbor() {
var infowindow = new google.maps.InfoWindow({
query: {"SELECT '.googft-info-window' FROM" + tableid};
    });
infowindow.open(map);
}

但没有任何反应

还尝试使用ExtendedData这个代码,因为当我将我的fusiontable导出到kml时,它将infowindow解析为ExtendedData

function izbor() {
var infowindow = new google.maps.InfoWindow({
query: {" SELECT 'ExtendedData' FROM " + tableid};
    });
infowindow.open(map);
}

但又一无所获:(

1 个答案:

答案 0 :(得分:0)

您的示例使用多边形,并且可以处理单击它。您也可以处理点击,但只能处理您区域(图层)的边框

google.maps.event.addListener(layer, 'click', function()
{
    // Your info window should be opened here
    alert("Clicked");
});

点击区域的边框,查看:)

<强>更新:

function izbor() {
    layer.setOptions({
        query: "SELECT geometry FROM " + tableid + " WHERE Naziv = 'Sisak'"
    });

    var infowindow = new google.maps.InfoWindow({
        content: "Info"
        , position: new google.maps.LatLng(44.75324026267657, 16.810970306396484)
    });
    infowindow.open(map);
}