你必須使用中包含您與地圖使用額外的標記外部陣列。在你的情況我已經添加下面的數組:
var extraMarkers = [];
然後當我點擊複選框,我得到的是複選框的ID,並在這兩個showOverlays()
和clearOverlays()
把它作爲函數的參數。
然後,在showOverlays()
中,我使用複選框ID
作爲extraMarkers鍵並將標記作爲值。
最後,在clearOverlays()
我再次複選框ID
用來獲取與來自extraMarkers陣列此ID的元素和我看到地圖可以null
,以除去標記。
看到這裏的工作示例:http://jsfiddle.net/x8D7y/1/
這裏是你所需的完整代碼:
var map;
var extraMarkers = [];
var myOptions = {
zoom: 8,
center: new google.maps.LatLng(45.0, 1.0)
};
map = new google.maps.Map($('#map')[0], myOptions);
var marker1 = new google.maps.Marker(
{
position: new google.maps.LatLng(45.5, 1.5),
map: map /*,
icon: 'img/bike5.png' */
}
);
var infowindow1 = new google.maps.InfoWindow(
{
content: '<div style="width: 200px;">Test 1 - <a href="http://www.google.com" target="_blank">Link</a></div>'
}
);
google.maps.event.addListener(
marker1,
'click',
function()
{
infowindow1.open(map, marker1);
}
);
function clearOverlays(myID)
{
google.maps.event.clearListeners(extraMarkers[myID], 'click');
extraMarkers[myID].setMap(null);
}
function showOverlays(myID)
{
var marker300 = new google.maps.Marker(
{
position: new google.maps.LatLng(45.0, 1.0),
map: map /*,
icon: 'img/bike5.png' */
}
);
extraMarkers[myID] = marker300;
var infowindow300 = new google.maps.InfoWindow(
{
content: '<div style="width: 200px;">Test 300 - <a href="http://www.google.com" target="_blank">Link</a></div>'
}
);
google.maps.event.addListener(
marker300,
'click',
function()
{
infowindow300.open(map, marker300);
}
);
}
$('#mapall').change(
function()
{
var myID = $(this).attr('id');
if($('#mapall').attr('checked'))
{
showOverlays(myID);
}
else
{
clearOverlays(myID);
}
}
);
解決方案,如果你得到了正確的答案,將其標記爲正確的,爲了節省其他成員領帶在StackOverflow中 –