感谢您的任何帮助,您可以提供!我已经查看了这些链接,但我无法将这些示例转换为我的代码的解决方案(我仍在学习很多关于 JS 和 Google 地图的知识):
- Google Maps v3 中的“marker.setVisible(false)”和“marker.setMap(null)”有什么区别?
- 切换隐藏/显示谷歌地图标记,
- http://www.raymondcamden.com/index.cfm/2012/12/1/Simple-Google-Maps-demo-with-Custom-Markers
- http://www.geocodezip.com/v3_MW_example_categories.html
我只想要一个复选框,选中时会显示我的数组中的标记(arrMarkers)。当复选框未选中时,我希望能够将标记切换为隐藏。我不希望此代码影响我行车路线中的标记。
下面是我最近的尝试。它不会导致任何错误,但复选框没有对标记做任何事情:
<script>
var directionsDisplay;
var directionsService = new google.maps.DirectionsService();
var map;
function initialize() {
CODE
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
$.getJSON( "CODE", {}, function( data ) {
CODE
var marker = new google.maps.Marker({
position: new google.maps.LatLng(CODE),
map: map,
});
arrMarkers = marker;
var infowindow = new google.maps.InfoWindow({
content: "CODE"
});
arrInfoWindows = infowindow;
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map, marker);
});
function MapAll () {
if (document.getElementById("mapall").checked) {
arrMarkers.setVisible(true);
}
else {
arrMarkers.setVisible(false);
};
}
document.getElementById("mapall).onchange = MapAll;
CODE
</script>
** 编辑 1 **
通过用我单击添加的标记替换我的 JSON 对象(使用@bnz 的解决方案),我能够让标记显示/隐藏。现在,我需要能够仅使用我的 JSON 对象添加标记。我更新的代码如下,但它给出了一个错误:“arrMarkers.push 不是函数”。当我删除那行代码时,地图会加载标记,但复选框不会做任何事情。
var directionsDisplay;
var directionsService = new google.maps.DirectionsService();
var map;
function initialize() {
CODE
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
var arrMarkers = [];
$.getJSON( "CODE", {}, function( data ) {
$.each( data, function( i, item ) {
var loc = item.masterlocation;
$("#markers").append('<li><a href="#" rel="' + i + '">' + loc.nickname + '</a></li>');
var marker = new google.maps.Marker({
position: new google.maps.LatLng(+loc.latitude, +loc.longitude),
map: map,
title: loc.nickname,
});
arrMarkers = marker;
arrMarkers.push(marker);
function clearOverlays() {
if (arrMarkers) {
for( var i = 0, n = arrMarkers.length; i < n; ++i ) {
arrMarkers[i].setMap(null);
}
}
}
function showOverlays() {
if (arrMarkers) {
for( var i = 0, n = arrMarkers.length; i < n; ++i ) {
arrMarkers[i].setMap(map);
}
}
}
$('#mapall').change(function() {
if($('#mapall').attr('checked')) {
showOverlays();
}
else {
clearOverlays();
}
});
});
}
function calcRoute() {
CODE
}