ご協力いただきありがとうございます。これらのリンクを確認しましたが、これらの例を自分のコードのソリューションに変換できませんでした (JS と Google マップについてはまだ多くを学んでいます)。
- Google マップ v3 の「marker.setVisible(false)」と「marker.setMap(null)」の違いは何ですか?
- Google マップ マーカーの表示/非表示を切り替える、
- 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
}