2011-07-09 89 views
1

我曾經有過這樣的事情 -問題創建自定義GICON

var gicons = []; 

var baseIcon = new GIcon(G_DEFAULT_ICON); 
baseIcon.iconAnchor = new GPoint(9,34); 
baseIcon.iconSize = new GSize(20,34); 
baseIcon.infoWindowAnchor = new GPoint(9,2); 

gicons["home"] = new GIcon(baseIcon,"yellow.png"); 
gicons["red"] = new GIcon(baseIcon,"red.png"); 
gicons["green"] = new GIcon(baseIcon,"green.png"); 
gicons["blue"] = new GIcon(baseIcon,"blue.png");` 

它工作正常。
取而代之的是,我想是這樣 -

var tags = ["home", "red","green", "blue"]; 
var tags_colors = ["yellow.png", "red.png", "green.png", "blue.png"]; 

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

    if(tags[i]!=null){ 
     gicons[tags[i]] = new GIcon(baseIcon,tags_colors[i]); 
    } 
} 

::::::編輯::::

'的GDownloadUrl( 「genxml.php」 功能(DOC){VAR xmlDoc中= GXml.parse(DOC); VAR標記= xmlDoc.documentElement.getElementsByTagName( 「標記」);?

  for (var i = 0; i < markers.length; i++) { 
       // obtain the attribues of each marker 
       var lat = parseFloat(markers[i].getAttribute("lat")); 
       var lng = parseFloat(markers[i].getAttribute("lng")); 
       var point = new GLatLng(lat,lng); 
       var address = markers[i].getAttribute("area"); 
       var name = markers[i].getAttribute("street"); 
       var html = "<b>"+name+"<\/b><p>"+address; 
       var category = markers[i].getAttribute("tag"); 
       // create the marker 
       var marker = createMarker(point,name,html,category); 
       map.addOverlay(marker); 
       tags[i] = markers[i].getAttribute('tag'); 

      } 

      // hadnling the tags dynamically, to make it unique 

      for (var i=0; i<tags.length-1 ; i++){ 
       var temp = tags[i]; 
       for(var j=i+1; j<tags.length; j++){ 
        if(temp == tags[j]){ 
         tags[j] = null; 
        } 
       }` 

它不工作不知道爲什麼有人可以幫我請

回答

1

有一個錯字:

var tag_colors =..... 
    tags_colors[i] 

然而,我寧願使用1個對象,而不是2個陣列:

var gicons={}; 
var tags = {'home' :'yellow.png', 
      'red' :'red.png', 
      'green' :'green.png', 
      'blue' :'blue.png' 
      }; 

for(var k in tags){ 
    gicons[k] = new GIcon(baseIcon,tags[k]); 
} 


編輯:

見callback-功能GDownloadUrl("genxml.xml")

您在鏈接的文檔的224線有建立標記,則回調

var marker = createMarker(point,name,html,category); 

內,但你以後創建GICON的回調函數內(線257)

gicons[temp_tag] = new GIcon(baseIcon,tags_colors[i]); 

結果是:裏面createMarker()的gicons對象仍然是空的,當作爲參數提供給new GMarker()

所以動態創建gIcons的正常工作(你可以檢查它裏面firebugs DOM標籤)gicons[category]是未知的,但它來得晚。

+0

哦,我很抱歉。在我的實際代碼中沒有錯別字。仍然沒有工作:(我編輯。 – Pow

+0

沒有進一步的錯誤,你可以請''var gicons = [];' –

+0

實際上我從自動生成的XML文件中獲取標記的值。所以,它是動態的。下面是大塊的代碼 - – Pow