3
我試圖用多個標記一次創建一個只允許一個信息窗口的谷歌地圖。標記是IP攝像機的位置,它們通過紅寶石獲取。我讀過類似問題的答案,因此解決方案是隻創建一個信息窗口並重新使用它。一次只能打開一個infowindow谷歌地圖
我試圖從一些其他問題實施解決方案,但我無法讓它工作。
$(document).ready(function() {
// execute
(function() {
// map options
var options = {
zoom: 2,
center: new google.maps.LatLng(25, 10), // centered US
mapTypeControl: false,
streetViewControl: false
};
// init map
var map = new google.maps.Map(document.getElementById('map-canvas'), options);
// set multiple marker
<% @cameras.each do |c| %>
// init markers
<% if c.deep_fetch(:location) {} != nil %>
var marker = new google.maps.Marker({
position: new google.maps.LatLng(<%= c.deep_fetch(:location, :lat) {} %>, <%= c.deep_fetch(:location, :lng) {} %>),
map: map,
title: 'Click Me '
});
// process multiple info windows
(function (marker) {
// add click event
google.maps.event.addListener(marker, 'click', function() {
infowindow = new google.maps.InfoWindow({
content: "<%= preview(c, true) %>"+
'<h5><%= c["name"] %></h5>'+
'<p><a href="/publiccam/<%= c['id'] %>">View Camera</a></p>'
});
infowindow.open(map, marker, this);
});
})(marker);
<% end %>
<% end %>
})();
});
是否有可能是由於我與<%@ cameras.each做創建每個攝像頭的信息窗口的方式只創建一個信息窗口| C | %>?
這看起來像是隻開放了最後一個標誌,無論我點擊該標記。 –
不,不是。只需運行代碼片段... – MrUpsidown