2014-01-18 58 views
0

我有一個大問題! 我通過$ .getJSON 動態地添加了新的標記,但是我還希望使用函數來刪除地圖上的所有標記。 這一點,因爲我想使用此功能之前把新動態與標記功能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> 
+0

所以......究竟是什麼你問了嗎?您是否嘗試編寫試圖刪除標記的函數?如果是這樣,你能否發佈並解釋什麼是工作,什麼不是?如果沒有,爲什麼你還沒有嘗試過呢? –

+2

聽起來好像你需要在添加標記時保留全局標記數組,以便以後可以清除它們。看到這個[SO問題](http://stackoverflow.com/questions/1544739/google-maps-api-v3-how-to-remove-all-markers)。 –

回答

2

使用你張貼的答案,作爲一個評論說代碼:創建一個全局標記陣列。將每個標記添加到inix函數中的數組中。循環遍歷deleteMarkers函數中的標記數組,併爲每個標記使用setMap(null)將其刪除。

所以,你的函數之外:

var markers = []; 

在inix功能(您創建標記之後):

markers.push(marker); 

在deleteMarkers功能:

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

    markers[i].setMap(null); 
} 
0

是刪除標記!我曾想過初始化()!但我不想使用另一張地圖。 我有想是這樣的:

<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); 
    inix(); 
    } 

    var testing ; 


    function inix() { 

     $.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); 
      testing=marker; 
      console.log(testing[0]); 
      }); 
     }); 
    } 
    function deleteMarkers() { 


    for (var b=0; b<=10; b++) 
    { 
    testing.setMap(null); 
    } 
    } 

    </script> 

問題是deleteMarkers功能只刪除一個標記

0

有無你給了這樣的舊大學試試嗎?

function clearMarkers() { 
    setAllMap(null); 
} 

根據建議here