2014-12-22 10 views
0

클릭 이벤트가 아닌 시작시 자동으로로드되는 내 bing 맵에 여러 infobox를 추가하고 싶습니다. 세 압핀이 있다고 가정하면 예를 들어 1 infobox에 제임스, 2 마크, 3 등이 포함될 것입니다. 3 infobox가 자동으로 데이터를 표시합니다. 지금은 루프에 넣어 그것을 추가 할 경우의 항상 루프보다는 후 내부의 마지막 값Bing Maps에 여러 개의 압핀을 추가하는 동안 infobox는 항상 마지막 요소를 사용합니다.

for (var i = 0; i < json.length; i++) { 
          var pinInfoBox; //the pop up info box 
          var infoboxLayer = new Microsoft.Maps.EntityCollection(); 
          var pinLayer = new Microsoft.Maps.EntityCollection(); 
          var loc = jsonData.location[i]; 
          var pushpinOptions = {icon: 'xxx.png', width: 80, height: 80, offset: new Microsoft.Maps.Point(0, 15)}; 
         var infoboxOptions = {showCloseButton: true, visible:false }; 
          pinInfobox = new Microsoft.Maps.Infobox(map.getCenter(), infoboxOptions); 
          pinInfobox.setHtmlContent('<div class="arrow_box"><div class="content" id="content">'+loc.name+'</div></div>'); //here the name should keep changing 
          infoboxLayer.push(pinInfobox); 
          var pin = new Microsoft.Maps.Pushpin(latLon,pushpinOptions); 
          pinLayer.push(pin); //add pushpin to pinLayer 
          Microsoft.Maps.Events.addHandler(pin, 'click', displayInfobox); //here instead of click event i want the infobox to display automatically on startup 
          map.entities.push(pinLayer); 
          map.entities.push(infoboxLayer); 
      } 

      function displayInfobox(e) { 

     pinInfobox.setOptions({title: e.target.Title, description: e.target.Description,     visible:true, offset: new Microsoft.Maps.Point(-50,90)}); 
     pinInfobox.setLocation(e.target.getLocation()); 
      } 

답변

0

설정에게 infoboxes의 옵션과 위치를합니다. 그런 다음 압핀에 각 infobox에 대한 참조를 저장하십시오. pin.infobox = pinInfobox; 그런 짓을 한 다음 displayInfobox 기능 당신이 수행하여 정보 상자를 표시 할 수 있습니다 : 당신이 압정의 많은 경우는 하나 개의 정보 상자를 가지고 필요에 따라 업데이트하는 것이 좋습니다 말했다

e.target.infobox.setOptions({visible: true}); 

. 다음은이 접근 방법을 간략하게 설명한 블로그 게시물입니다. https://rbrundritt.wordpress.com/2011/10/13/multiple-pushpins-and-infoboxes-in-bing-maps-v7/