0

各ピンにインフォボックスを追加しようとすると、各ピンが個別の関数から読み込まれ、対応するタイトル、説明、緯度/経度などが xml ファイルから添付されます。(必要に応じてソース)

ピンの配列を受け取る関数では、各アイテムをループして、それに応じてインフォボックスを追加しようとしています。ここで何が欠けているかについてのアイデアはありますか?

      function GeoRSSImportedCallback(items, bounds) {
          map.entities.push(items);

          for (var i = 0; i<items.length; i++) {
            items.Title = items.title;
            items.Description = items.description;
            Microsoft.Maps.Events.addHandler(itmes, 'click', displayInfoBox);
          }

          map.entities.push(infoboxLayer);
          map.setView({ bounds: bounds });
      }

    function displayInfoBox(e) {
        pinInfoBox.setOptions({title: e.target.Title, description: e.target.Description, visible:true, offset: new Microsoft.Maps.Point(0,25)});
        pinInfoBox.setLocation(e.target.getLocation());
}

GetMap()関数で以下を初期化します

        pinInfoBox = new Microsoft.Maps.Infobox(new Microsoft.Maps.Location(0, 0), { visible: false });
        infoboxLayer.push(pinInfoBox);
4

1 に答える 1

0

あなたのコードは、さまざまな Bing Maps オブジェクトの一部ではないプロパティを使用しているため、それがあなたの意図であると仮定します。for ループにもエラーがあります。次のほうが正しいはずです。

  function GeoRSSImportedCallback(items, bounds) {
      map.entities.push(items);

      for (var i = 0; i<items.length; i++) {
        items[i].Title = items[i].title; // Assumes .title is defined
        items[i].Description = items[i].description; // Assumes .description is defined
        Microsoft.Maps.Events.addHandler(items[i], 'click', displayInfoBox);
      }

      map.entities.push(infoboxLayer);
      map.setView({ bounds: bounds });
  }
于 2012-11-02T17:47:07.257 に答える