2012-12-28 85 views
0

我需要清除/刪除選項更改上的所有以前的標記。我試着搜索Maps API文檔和Stackoverflow以獲得答案,但不幸的是,我不是JavaScript大師。它們似乎都以不同的方式實施,而且我還沒有成功實現它的工作。我來的最近的,是刪除一個標記。刪除選項上的標記更改Google Maps JavaScript API v3

我感謝您提供的任何幫助,謝謝!

map = new google.maps.Map(document.getElementById('map_canvas'), { 
    zoom: 14, 
    center: new google.maps.LatLng(40.680099,-73.945693), 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
}); 

infowindow = new google.maps.InfoWindow(); 

var marker, i; 

var markerShadow = new google.maps.MarkerImage("http://chart.apis.google.com/chart?chst=d_map_pin_shadow", 
    new google.maps.Size(40, 37), 
    new google.maps.Point(0, 0), 
    new google.maps.Point(12, 35)); 

var restaurantColor = "0080FF"; 

var restaurantMarker = new google.maps.MarkerImage("http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=%E2%80%A2|" + restaurantColor, 
    new google.maps.Size(21, 34), 
    new google.maps.Point(0,0), 
    new google.maps.Point(10, 34)); 

var takeoutColor = "79CEFF"; 

var takeoutMarker = new google.maps.MarkerImage("http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=%E2%80%A2|" + takeoutColor, 
    new google.maps.Size(21, 34), 
    new google.maps.Point(0,0), 
    new google.maps.Point(10, 34)); 

$('#category').change(function() { 

    if ($(this).val() == 'restaurant') { 

     for (i = 0; i < restaurant.length; i++) { 
      marker = [] 
      marker = new google.maps.Marker({ 
      position: new google.maps.LatLng(restaurant[i][1], restaurant[i][2]), 
      map: map, 
      icon: restaurantMarker, 
      shadow: markerShadow, 
      animation: google.maps.Animation.DROP 
     }); 

     google.maps.event.addListener(marker, 'click', (function(marker, i) { 
      return function() { 
       infowindow.setContent(restaurant[i][0]); 
       infowindow.open(map, marker); 
      }; 
      })(marker, i)); 
     } 
    } 

    if ($(this).val() == 'takeout') { 

     for (i = 0; i < takeout.length; i++) { 
      marker = new google.maps.Marker({ 
      position: new google.maps.LatLng(takeout[i][1], takeout[i][2]), 
      map: map, 
      icon: takeoutMarker, 
      shadow: markerShadow, 
      animation: google.maps.Animation.DROP 
     }); 

     google.maps.event.addListener(marker, 'click', (function(marker, i) { 
      return function() { 
       infowindow.setContent(takeout[i][0]); 
       infowindow.open(map, marker); 
      }; 
      })(marker, i)); 
     } 

    } 

}); 

var restaurant = [ 
    ['<div class="restaurant"><strong>SoCo Southern Comfort</strong><br />509 Myrtle Ave. Brooklyn, NY 11205<br /> <a href="tel://718-783-1936">(718) 783-1936</a></div>', 40.693846,-73.964513, 1], 

    ['<div class="restaurant"><strong>Black Swan</strong><br />1048 Bedford Ave. Brooklyn, NY 11205<br /><a href="tel://718-783-4744">(718) 783-4744</a></div>', 40.689128,-73.955187, 2] 
]; 

var takeout = [ 
    ['<div class="take_out"><strong>Chan&#39;s Garden</strong><br />679 Myrtle Ave. Brooklyn, NY 11205<br /><a href="tel://718-875-6637">(718) 875-6637</a></div>', 40.694729,-73.956357, 1], 

    ['<div class="take_out"><strong>New Hardee Chinese Restaurant</strong><br />835 DeKalb Ave. Brooklyn, NY 11221<br /><a href="tel://718-384-0338">(718) 384-0338</a></div>', 40.692559,-73.943021, 2] 
]; 
+0

[Google Maps V3 - 刪除所有標記]的可能重複(http://stackoverflow.com/questions/12526717/google-maps-v3-remove-all-markers) – geocodezip

+0

可能的重複[Google Maps API v3:如何刪除所有標記?](http://stackoverflow.com/questions/1544739/google-maps-api-v3-how-to-remove-all-markers) –

回答

0

我看過的文件,似乎標記方法.setMap(空)(注意空參數)將刪除標記。你已經試過了嗎?

你說你已經刪除了一個標記。你是怎麼做的?

+0

嗨Marky,謝謝爲迴應。我確實嘗試了.setMap(null),但我認爲我沒有正確地做到這一點,儘管b/c一直阻止繪製新的位置標記......他們看起來像是開始放在地圖上,但從來沒有沒有。只有一次,我設法刪除一個標記,但不幸的是,我不記得我現在是如何到達那裏的。 – Sebas

+0

我內聯認爲它與我的數組都有不同的名稱(餐廳,外賣)..不知道。你認爲你能告訴我你將如何去宣佈它嗎?我會非常感謝幫助。節日快樂! – Sebas

0

我有一個類似的問題,我目前無法得到代碼,看看我如何修復它,但我記得我的臨時解決方案是重繪地圖,不理想但可能有幫助,會嘗試獲得完整解決方案

+0

我雖然這樣做,但地圖重繪似乎更分散注意力,更不用說慢。所以如果我能設法清除那些理想的標記。當你碰巧有一些時間並且接近你的代碼時,如果你能分享你的解決方案,那將是非常棒的。我非常感謝你的幫助。節日快樂! – Sebas