2011-08-18 66 views
3

我一直在用這一個撞到牆上的頭撞牆。我創建了一個多邊形數組,並且想要關聯每個將顯示在infoWindow中的一些數據。我可以看到地圖上的所有多邊形。我添加了監聽器,它會觸發(發生顏色變化),但我沒有得到infoWindow。任何幫助將大大appreaciated!谷歌地圖 - 將信息窗口附加到數組中的多邊形

乾杯!

ç...

tmppoly = new google.maps.Polygon({ 
    map: map, 
    paths: polypath, 
    strokeColor: scolor, 
    strokeOpacity: 0.5, 
    strokeWeight: 2, 
    fillColor: fcolor, 
    fillOpacity: 0.5 
}); 

addPolygonClick(tmppoly,mdata); 
plot_polygons.push(tmppoly); 

... 

function addPolygonClick(poly,html) { 

    infowindow = new google.maps.InfoWindow(
    { 
     content: html 
    }); 

    google.maps.event.addListener(poly,'click', function(event) { 
     this.setOptions({fillColor: "#000000"}); 
     infowindow.open(map); 
    }); 

} 
+0

我相信infowindow需要位置選項或標記參數,除非他們改變了它。 – roselan

回答

2

有可能被防止這種工作的幾個問題:

1: 你需要一個變種的信息窗口的前面,使之成爲局部變量:

var infowindow = new google.maps.InfoWindow(... 

因爲您每次添加新的點擊列表時都會替換infowindow變量ENER。

2: 你需要指定信息窗口(見:http://code.google.com/apis/maps/documentation/javascript/reference.html#InfoWindowOptions)的位置或錨。

唯一有效的錨標記,所以你可能會想指定「位置」屬性。 'position'必須是有效的google.maps.LatLng對象。我懷疑你會想要計算你的多邊形的中心作爲位置。

您還需要確保地圖是一個全局變量,雖然有可能是看你的代碼的其餘部分。

8

我可以提供一些有關您的問題的建議。

首先,你應該知道 'infowindow.open(地圖,錨?:MVCObject)' 的方法表達。正如google api v3所說:在覈心API中,唯一的錨是Marker類。多邊形類不符合條件,但是,我們可以通過其他方式實現。

var polygon = new google.maps.Polygon({ 
    paths: PGpoints, //The PGpoints is the collection of points around this polygon. 
    map: map, 
    strokeColor: colory, 
    strokeOpacity: 0.6, 
    strokeWeight: 1, 
    fillColor: colory, 
    fillOpacity: 0.35  
}); 

polygon.set("Info", idy); // Set some attributes for adding extra information into this polygon. 

google.maps.event.addListener(polygon, 'click', function() { 
    var infoWindow = new google.maps.InfoWindow(); 
    infoWindow.setContent("Information : " + polygon.get("Info")); 

    // 'laty,lngy' is the location of one point in PGpoints, which can be chosen as you wish 
    infoWindow.setPosition(new google.maps.LatLng(laty,lngy));  
    infoWindow.open(map); 
}); 

上面的代碼已通過測試,您可以直接使用它。然後,如果您單擊一個多邊形,infoWindow會出現在地圖上方。

+0

謝謝!這個解決方案真的很有用。 – Andrea

0

請看一看這個https://developers.google.com/maps/documentation/javascript/examples/event-closure,並與上述反應結合起來分配一個唯一的消息爲您的多邊形陣列中的每個多邊形。

我還在一個層用爲每個多邊形的唯一消息具有多個多邊形工作。我還沒有成功。通過上面的響應,我得到了信息窗口,但是我得到了所有多邊形的相同信息。 一旦我解決了我的問題,我會發布解決方案。

+0

如果你可以包含你如何組合他們的例子,這可能是一個更好的答案。 – icedwater