1

私は以前このようなものを持っていました-

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 "、function(doc){var xmlDoc = GXml.parse(doc);varmarkers = xmlDoc.documentElement.getElementsByTagName(" marker ");

            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; 
                     }
                }`

動作していません。理由はわかりません。誰か助けてくれませんか?

4

1 に答える 1

1

タイプミスがあります:

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

ただし、2 つの配列ではなく 1 つのオブジェクトを使用することをお勧めします。

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]); 
}


編集:

コールバック関数を参照してくださいGDownloadUrl("genxml.xml")

コールバック内のリンクされたドキュメントの 224 行目にマーカーを作成します。

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

ただし、後でコールバック関数内で GIcon を作成します (257 行目)。

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

結果は次 createMarker()のとおりです。gicons-object の内部はまだ空でgicons[category]あり、引数として渡された場合は不明です。new GMarker()

したがって、GIcons の動的作成は正常に機能します (firebugs DOM タブ内で調べることができます) が、遅くなります。

于 2011-07-09T00:45:43.013 に答える