2014年9月11日木曜日

全マーカー削除①


今回はマーカーの全削除の仕方を紹介します。
マーカーの全削除方法は沢山あると思うので、
今回は①と言うタイトルにしました。
随時増やしていきたいと思っています。

サンプルでは地図の下に作った
マーカー全削除ボタン」ボタンをクリックすることで、
地図上に設置されている全てのマーカーを一括削除します。

仕組みは簡単で
下記のようにマーカーの入れ物を宣言し、
forEachでどんどん詰め込んでいきます。
// マーカーの作成
var markers = new google.maps.MVCArray();
latlngs.forEach(function (latlng, index) {
    var marker = new google.maps.Marker({
        position: latlng,
        map: gmap
    });
    markers.push(marker);
});

その後、マーカーを全削除したくなったら、
下記の様に今度はforEachで取り出しながらマーカーを削除していきます。
// 地図クリックで全マーカー削除
var removeButton = document.getElementById("remove_button");
google.maps.event.addDomListener(removeButton, "click", function () {
    markers.forEach(function (marker, index) {
        marker.setMap(null);
    });
});

それではサンプルです。
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="utf-8" />
    <title>マーカー全削除</title>
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
    <script type="text/javascript">
        google.maps.event.addDomListener(window, "load", function () {
            var latlngs = [
                new google.maps.LatLng(35.496456, 139.262695),
                new google.maps.LatLng(35.906849, 139.702148),
                new google.maps.LatLng(35.433820, 140.130615),
                new google.maps.LatLng(34.985003, 139.883423),
                new google.maps.LatLng(35.880149, 139.048462)
            ];

            // マップを作成
            var mapOptions = {
                zoom: 7,
                center: new google.maps.LatLng(35.686773, 139.68815)
            };
            var gmap = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);

            // マーカーの作成
            var markers = new google.maps.MVCArray();
            latlngs.forEach(function (latlng, index) {
                var marker = new google.maps.Marker({
                    position: latlng,
                    map: gmap
                });
                markers.push(marker);
            });

            // 地図クリックで全マーカー削除
            var removeButton = document.getElementById("remove_button");
            google.maps.event.addDomListener(removeButton, "click", function () {
                markers.forEach(function (marker, index) {
                    marker.setMap(null);
                });
            });
        });
    </script>
</head>
<body>
    <div id="map_canvas" style="width: 300px; height: 300px"></div>
    <span id="remove_button">マーカー全削除ボタン</span>
</body>
</html>

マーカー全削除ボタン



このエントリーをはてなブックマークに追加

0 件のコメント:

コメントを投稿