簡體   English   中英

如何從谷歌地圖v3刪除標記?

[英]How to remove markers from google maps v3?

我正在建立一個顯示當地吃午飯的網站。 該網站使用復選框來隱藏和顯示內容:

<li>Sandwich: <input type="checkbox" checked="checked" id="sandwichbox" onclick="boxclick(this,'sandwich')" /></li>
<li>Salad: <input type="checkbox" id="saladbox" onclick="boxclick(this,'salad')" /></li>
<li>Pasta: <input type="checkbox" id="pastabox" onclick="boxclick(this,'pasta')" /></li>

這些工作正常,但是我正在使用switch語句刪除標記。

function hide(category) {
switch(category) {
    case "sandwich":
      for (var i=0; i<gmarkers.length; i++) {
        if (gmarkers[i].sandwich == 1) {
          gmarkers[i].setVisible(false);
        }
      }
      break;
    case "salad":
      for (var i=0; i<gmarkers.length; i++) {
        if (gmarkers[i].salad == 1) {
          gmarkers[i].setVisible(false);
        }
      }
      break;
    case "pasta":
      for (var i=0; i<gmarkers.length; i++) {
        if (gmarkers[i].pasta == 1) {
          gmarkers[i].setVisible(false);
        }
      }
      break;
}
}

我這樣做是因為商店可以出售多種商品(例如,三明治和沙拉),所以每個商店不能有一個類別。 因此,在我的XML中,每個產品都有節點:-

<markers>
    <marker name="Earl of Sandwich" address="40 Ludgate Hill" tel="020 7236 2846" website="www.earlofsandwich.co.uk" lat="51.514072" lng="-0.101638" sandwich="1" salad="1" pasta="" oriental="" curry="" mexican="" jacket="" soup="1" sushi="" roast="" wraps="1" falafel=""/>
    <marker name="Chao! Now" address="4 St Andrews Hill" tel="02036320368" website="www.chaonow.co.uk" lat="51.513008" lng="-0.101322" sandwich="1" salad="" pasta="" oriental="1" curry="" mexican="" jacket="" soup="1" sushi="" roast="" wraps="" falafel=""/>
</markers>

我想做的是刪除switch語句,並將其替換為類似內容,將category值傳遞到for循環中,但是我似乎無法使其工作:-

function hide(category) {
      for (var i=0; i<gmarkers.length; i++) {
        if (gmarkers[i].category == 1) {
          gmarkers[i].setVisible(false);
        }
      }
}

我嘗試了以下方法:

function hide(category) {
    var mymarker = "gmarkers[i]." + category;
      for (var i=0; i<gmarkers.length; i++) {
        if (mymarker == 1) {
          gmarkers[i].setVisible(false);
        }
      }
}

但這只是將mymarker作為變量傳遞,並且我沒有分配值。

非常感謝您的幫助,或者如果我走錯了方向並且應該為數據使用其他格式,請指出。 我正在考慮的另一種方法是將值添加到數組中並遍歷該數組,但是,我只有一個1或null值,並且無法再次使用category變量獲取二維數組。

在此先感謝您,如果您需要更多信息,請告訴我。

我相信您想使用變量訪問對象屬性。 使用方括號符號代替點符號。 說有一個對象“人”

var person = {name: "someone", age: 23};

您可以像訪問“名稱”屬性

var name = person["name"]

當屬性名稱包含可能是語法錯誤或關鍵字/保留字的字符時,也可以使用括號表示法。 例如:

person["first name"] = "Nicholas";

它也允許在括號內使用變量名。

person[propertyName] = "some value"; //propertyName is a variable

所以你的情況應該是

function hide(category) {
    var mymarker = gmarkers[i][category];
      for (var i=0; i<gmarkers.length; i++) {
        if (mymarker == 1) {
          gmarkers[i].setVisible(false);
        }
      }
}

希望這可以幫助 :)

如果類別是標記的屬性,則這應該起作用:

function hide(category) {
   for (var i=0; i<gmarkers.length; i++) {
     if (gmarkers[i][category] == 1) {
        gmarkers[i].setVisible(false);
     }
   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM