javascript - 如何删除标记 googlemap $.getjson

标签 javascript jquery json google-maps google-maps-api-3

我有一个大问题!! 我通过 $.getJSON 动态放置新标记 但我还想创建一个函数来删除 map 上的所有标记。 这是因为我想在使用函数 xx3 动态放置新标记之前使用此函数删除标记

     <script type="text/javascript"
      src="http://maps.googleapis.com/maps/api/js?keyenter code here=true">
    </script>
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    <script type="text/javascript">
      var map;
      function initialize() {
        var mapOptions = {
          center: new google.maps.LatLng(40.76455136505513, -73.98056030273438),
          zoom: 13,
          mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        map = new google.maps.Map(document.getElementById("map_canvas"),
            mapOptions);
      }
    </script>
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>    
  </head>
  <body onload="initialize()">
  <div id='map-ui'>
    <ul>
        <li><a onclick="javascript:xx3()" id='find here'>FIND HERE</a></li>
        <li><a onclick="javascript:muovi()" id='filter-foodx'>skate</a></li>
        <li><a onclick="javascript:xx4()" id='filter-foodx'>shop</a></li>
        <li><a onclick="javascript:tutto()" class="active" id='filter-alxl'>show all events</a></li>
    </ul>
</div>
    <div id="map_canvas" style="width:100%; height:100%"></div>
    <script type="text/javascript">
      $(document).ready(function() {
        $.getJSON("/vaij.php?la=40.76455136505513&lg=-73.98056030273438", function(json1) {
          $.each(json1, function(key, data) {
            var latLng = new google.maps.LatLng(data.la, data.lg); 
            // Creating a marker and putting it on the map
            var marker = new google.maps.Marker({
                position: latLng,
                title: data.namesp
            });
            marker.setMap(map);
          });
        });
      });
    </script>
    <script>

    function clearMarkers() {
  new google.maps.Marker(null);
}

function muovi() {

      var latLng = new google.maps.LatLng(45.59426285330727 , 8.918224610396585); //Makes a latlng
      map.panTo(latLng); //Make map global
  }



    function xx3() {




    $.getJSON("/vaij.php?la=45.59426285330727&lg=8.918224610396585", function(json1) {
        var markers = [];
          $.each(json1, function(key, data) {
            var latLng = new google.maps.LatLng(data.la, data.lg); 
            // Creating a marker and putting it on the map
            var marker = new google.maps.Marker({
                position: latLng,
                title: data.namesp
            });
            marker.setMap(map);
          });
        });

}

function xx4() {
    map.clearOverlays();


var markersArray = [];

function clearOverlays() {
  if (markersArray) {
    for (i in markersArray) {
      markersArray[i].setMap(null);
    }
  }
}
}

    </script>

最佳答案

使用您发布的代码作为答案并如评论之一所述:创建一个全局标记数组。将每个标记添加到 inix 函数中的数组中。循环遍历 deleteMarkers 函数中的标记数组,对于每个标记,使用 setMap(null) 将其删除。

所以,在你的职能之外:

var markers = [];

在 inix 函数中(创建标记后):

markers.push(marker);

在deleteMarkers函数中:

for (var i=0; i<markers.length; i++) {

    markers[i].setMap(null);
}

关于javascript - 如何删除标记 googlemap $.getjson,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21207501/

相关文章:

javascript - switch语句不接收参数

javascript - 在 JavaScript 中分解函数名称

javascript - 在多维数组中使用 imgs

javascript - 用数组键/值替换字符

json - 区分JSON和其他错误

php - 异步将数据放入动态生成的 div

mysql - 在mysql中通过key查找json

javascript - 将包含一项的数组拆分为包含多项的数组

javascript - 获取元素的 ID 并将其设置为变量

javascript - 当触发按钮使用jquery和ajax时,Session无法更新