2012-06-05 128 views
1

我有點卡住試圖告訴Javascript去做我想做的事情。選擇鏈接或複選框以顯示類別標記

我有一個示例地圖http://calwestcultural.com/sgs/backup/example-map.html,我在我的快捷菜單左側有類別。我希望這些類別是可點擊的,並只顯示該類別的標記。

我想:負載 2. 1.隱藏標記當你點擊一個類別(例如「吃」,「銀行」等),我想只爲標記該類別中顯示

*如果在菜單中創建複選框使得這更容易,我願意這樣做。我只是掛在我的地圖的這一部分,需要繼續前進。

任何人都可以幫忙嗎?有些東西告訴我這是一個簡單的解決方法。

回答

1

如果您想將標記保存在不同的類別中,請爲每個標記類別創建一個數組,並使用它們來存儲每組標記。然後執行以下操作:

要隱藏負載標記,創建標記,但留下的標記映射屬性設置爲null

var myLatlng = new google.maps.LatLng(-25.363882,131.044922); 
var myOptions = { 
    zoom: 4, 
    center: myLatlng, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
}; 
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
var marker = new google.maps.Marker({ 
    position: myLatlng, 
    map: null, 
    title:"Hello World!" 
}); 

要只顯示給定類別的標記,監聽事件應該觸發標記顯示,然後設置標誌地圖屬性:

for (var i = 0; i < markerCategoryArray.length; i++) { 
    markerCategoryArray[i].setMap(map); 
} 
+0

嗯...我試過第一個選項,但它刪除了所有的標記,即使當我在菜單中點擊它們(只是顯示信息窗口)。目前,我沒有類別,因爲我掛上瞭如何使用我現在具有的地圖和功能創建它們。 [看我的地圖](http://calwestcultural.com/sgs/backup/example-map.html) – MizAkita

0

我如何做到這一點從this answer沒有多個品類陣列的線索。更多的是,google maps v3 example linked出現以下內容。

var gmarkers = []; 
var marker = new google.maps.Marker({ 
    position: latlng, 
    icon: gicons[category], 
    shadow: iconShadow, 
    map: map, 
    title: name, 
    zIndex: Math.round(latlng.lat()*-100000)<<5 
}); 
// === Store the category and name info as a marker properties === 
marker.mycategory = category;         
marker.myname = name; 
gmarkers.push(marker); 

然後只是過濾標記上的類別,如exmaple中所示。

// == shows all markers of a particular category, and ensures the checkbox is checked == 
function show(category) { 
    for (var i=0; i<gmarkers.length; i++) { 
     if (gmarkers[i].mycategory == category) { 
     gmarkers[i].setVisible(true); 
     } 
    } 
    // == check the checkbox == 
    document.getElementById(category+"box").checked = true; 
} 

// == hides all markers of a particular category, and ensures the checkbox is cleared == 
function hide(category) { 
    for (var i=0; i<gmarkers.length; i++) { 
     if (gmarkers[i].mycategory == category) { 
     gmarkers[i].setVisible(false); 
     } 
    } 
    // == clear the checkbox == 
    document.getElementById(category+"box").checked = false; 
    // == close the info window, in case its open on a marker that we just hid 
    infowindow.close(); 
}