2011-03-31 21 views
1

這裏是我的markers[]數組:谷歌地圖調用setVisible不是一個函數

partnerMarkers = [ 
     // London 
     { lat: 51.515482718, lng: -0.142903122, name: "London", content: "Our home town and international hub." }, 
// Dubai 
     { lat: 25.2644444, lng: 55.3116667, name: "Middle East", content: "Dubai desc" } 
]; 

我有這個功能,通過標記列陣(通過按鈕別處觸發)循環:

function toggle_layer(markers) { 
    for (var i=0; i<markers.length; i++) { 
     markers[i].setVisible(false); 
    } 
} 

我得到markers[i].setVisible is not a function - 但然後這工作正常:

function toggle_layer(markers) { 
    for (var i=0; i<markers.length; i++) { 
     console.log(markers[i]); 
    } 
} 

爲什麼setVisible沒有在這方面工作?

+0

什麼樣的對象是標誌? – 2011-03-31 12:10:40

+0

@NiklasRingdahl它是一個數組。 – strangerpixel 2011-03-31 12:26:10

+0

是的,但一個什麼樣的數組?我想它應該是Marker,你能提供標記對象設置時的代碼嗎? – 2011-03-31 12:28:46

回答

2

這裏是JSFiddle Demo:

好像你的標誌只是對象,而不是google.maps.Markers,因此它不具有內它setVisible()功能。您基本上想要將對象內的數據轉換爲google.maps.Marker對象。我創建了一個全局數組gooMarker來保存標記。通過點擊地圖下方的鏈接,它會隱藏標記。下面是創建標記,然後隱藏它們的方式:

HTML標記:

<div id='parent'> 
    <div id="map_canvas" style="width: 650px; height: 550px;"></div> 
</div> 
<div id='hidemark'>Click to hide markers</div> 

的JavaScript +谷歌地圖API V3:

var map; 
var gooMarker = []; 

var partnerMarkers = [ 
    { 
    lat: 51.515482718, 
    lng: -0.142903122, 
    name: "London", 
    content: "Our home town and international hub."}, 
    { 
    lat: 25.2644444, 
    lng: 55.3116667, 
    name: "Middle East", 
    content: "Dubai desc"} 
]; 

function initialize() { 

    var london = new google.maps.LatLng(51.5, 0); 

    var myOptions = { 
     backgroundColor: '#FFFFF', 
     zoom: 2, 
     center: london, 
     navigationControl: true, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 

    var map_canvas = document.getElementById("map_canvas"); 

    map = new google.maps.Map(map_canvas, myOptions); 

    for (var i = 0; i < partnerMarkers.length; i++) { 
     gooMarker.push(new google.maps.Marker({ 
      position: new google.maps.LatLng(partnerMarkers[i].lat, partnerMarkers[i].lng), 
      map: map, 
      title: partnerMarkers[i].name 
     })); 
    } 
} 

function hideMarkers(){ 
    for(var i=0; i<gooMarker.length; i++){ 
     gooMarker[i].setVisible(false); 
    } 
} 

document.getElementById('hidemark').onclick = hideMarkers; 

window.onload = initialize; 
+0

謝謝 - 將標記推入gooMarker陣列是關鍵。 – strangerpixel 2011-03-31 17:27:02

0

我沒有看到在標記構造你的代碼

new google.maps.Marker 
1

kjy112是當場,簡化直接向插件到您的代碼:

partnerMarkers = [ 
// London 
    new google.maps.Marker(
    { position: new google.maps.LatLng(51.515482718, -0.142903122), 
    title: "London - Our home town and international hub." }, 
// Dubai 
    new google.maps.Marker(
    { position: new google.maps.LatLng(25.2644444, 55.3116667), 
    title: "Middle East - Dubai desc" } 
]; 
+0

+1簡化@Niklas – kjy112 2011-03-31 15:24:44

相關問題