2016-06-30 5 views
0

Bing hat 2 EventStyles für einen Pin.Bing Map v8 - ausgewählte Pinbelegung abwählen

  • enableHoverStyle: Boolean
  • enableClickedStyle: Boolean

gehen unten, um zu sehen, diese Ereignisse/styles in Aktion http://www.bing.com/api/maps/sdk/mapcontrol/isdk#setPushpinOptions+JS

Also, was im verbinden versucht, ein bereits ausgewählt zu erreichen abgewählt Pin, wenn ein anderer Pin ausgewählt ist. Gibt es eine Möglichkeit, das zu tun?

Edited:

ich eine Lösung nicht sicher gefunden, wenn es optimal ist, aber hier ist es.

Ich hatte das Ereignis-Trigger auf Reißzwecke

klicken
Microsoft.Maps.Events.addHandler(pushpin, 'click', togglePinState); 

Dann die togglePinState Funktion

function togglePinState(pinData){ 

     if(pinData.target == null) 
      return; 

     if(selectedPin == null){ 
      selectedPin = pinData.target; 
      selectedPin.setOptions({enableClickedStyle: true}); 
      return; 
     } 
     if(pinData.target != selectedPin){ 
      selectedPin.setOptions({enableClickedStyle: false}); 
      selectedPin = pinData.target; 
      selectedPin.setOptions({enableClickedStyle: true}); 
     } 
    } 

Antwort

1

Ich habe keinen Code Lösung dieses speziellen Fall gesehen, wenn bing-v8 in eventStyles gebaut unter Verwendung von Ich hoffe, das hilft jemandem.

Dies ist neuerer Code als der in meinem ursprünglichen Beitrag. Das funktioniert jetzt perfekt für mich. Nur können Sie die Pins nicht abwählen. Mit dem Update-Code können Sie dies tun, siehe unten.

function togglePinState(pinData){ 

     if(pinData.target == null) 
      return; 

     if(selectedPin == null){ 
      selectedPin = pinData.target; 
      PopulateSidePanel(selectedPin) 
      return; 
     } 
     // Checks if the pin that triggered the event is not equal to the selected pin if so, we change states of both pins. 
     if(pinData.target != selectedPin){ 
      selectedPin.setOptions({enableClickedStyle: false}); 
      selectedPin.setOptions({enableClickedStyle: true}); 
      selectedPin = pinData.target; 
      PopulateSidePanel(selectedPin) 
     }  
    } 

Update 1

Added die Funktionalität, wenn Sie wollen einfach nur den aktuellen ausgewählten wechseln Zustand abgewählt.

function togglePinState(pinData){ 

     // Just in case 
     if(pinData.target == null) 
      return; 

     // There is no selected Pin so we just assign the first pin to be the selectedPin 
     if(selectedPin == null){ 
      selectedPin = pinData.target; 
      PopulateSidePanel(selectedPin) 
      return; 
     } 
     // Checks if the pin that triggered the event is not equal to the selected pin if so, we change states of both pins. 
     else if(pinData.target != selectedPin){ 
      selectedPin.setOptions({enableClickedStyle: false}); 
      selectedPin.setOptions({enableClickedStyle: true}); 
      selectedPin = pinData.target; 
      PopulateSidePanel(selectedPin) 
     } 
     // if the pin that triggered the event is equal to the selected pin then we set everything to null. 
     else { 
      selectedPin = null; 
      PopulateSidePanel(null); 
     }  
    }