Cuadro de información para Bing Maps

Actualmente estoy trabajando en una aplicación de maps bing y parece que no puedo hacer que aparezca el cuadro de información cuando el usuario hace clic en el pin. He estado siguiendo el SDK y debería ser casi exactamente igual. Aquí está lo que tengo:

// *********************************** // Function creates a single pin // and returns a reference to the pin function createMapPin(latLong, sName) { var pinImg = "imagespins/Good.png"; var pin = new Microsoft.Maps.Pushpin(latLong, { icon: pinImg, anchor: new Microsoft.Maps.Point(8, 8), draggable: true, width: 48, height: 48 }); pin.title = sName; pinInfobox = new Microsoft.Maps.Infobox(pin.getLocation(), { title: 'My Pushpin', description: 'This pushpin is located at (0,0).', visible: false, offset: new Microsoft.Maps.Point(0, 15) }); // Add handlers for the pushpin events Microsoft.Maps.Events.addHandler(pin, 'click', displayInfobox); // Hide the infobox when the map is moved. Microsoft.Maps.Events.addHandler(map, 'viewchange', hideInfobox); map.entities.push(pin); map.entities.push(pinInfobox); return pin; } function displayInfobox(e) { pinInfobox.setOptions({ visible: true }); } function hideInfobox(e) { pinInfobox.setOptions({ visible: false }); } 

Los pines se crean y agregan al map con éxito y cuando el usuario hace clic en el pin, ingresa el método dispayInfoBox, pero el cuadro de post simplemente no parece aparecer.

Cualquier sugerencia es en gran medida correcta. ¡Gracias!

tu código funciona, lo he intentado, siempre y cuando solo llames a createMapPin() una vez. Pero a juzgar por su código, su intención es llamar a createMapPin() varias veces, y esto hará que la infobox de información deje de comportarse como usted cree. La razón es esta línea:

 pinInfobox = new Microsoft.Maps.Infobox(pin.getLocation(), { title: 'My Pushpin', description: 'This pushpin is located at (0,0).', visible: false, offset: new Microsoft.Maps.Point(0, 15) }); 

ya que no declaró pinInfobox como una variable local a través de la palabra key var , se declara implícitamente como una variable global. No creo que este sea tu bash, porque tan pronto como vuelvas a llamar a createMapPin() , se pinInfobox , porque es una variable global. Entonces, en efecto, a pesar de que sigues creando nuevas infoboxes, solo hay una instancia de la misma y sigue recibiendo nuevos valores asignados. Entonces, si haces clic en una chincheta, la única window de información probablemente aparece en algún lugar fuera de la pantalla y no la ves. Creo que tu intención es tener un cuadro de información asociado con cada marcador. Para hacer esto, debe declarar el cuadro de información como una variable local, de esta manera:

 var pinInfobox = new Microsoft.Maps.Infobox(pin.getLocation(), { title: 'My Pushpin', description: 'This pushpin is located at (0,0).', visible: false, offset: new Microsoft.Maps.Point(0, 15) }); 

También necesitará modificar los controlleres de events para interactuar con la versión local del object infobox y no solo con la variable global única. La forma más fácil de hacerlo es simplemente declarar los manejadores de events como funciones anónimas en el scope de su function createMapPin() y anular el significado de esta palabra key usando el enlace de function:

 Microsoft.Maps.Events.addHandler(pin, 'click', function (e) { this.setOptions({ visible: true }); } .bind(pinInfobox)); Microsoft.Maps.Events.addHandler(map, 'viewchange', function(e) { this.setOptions({ visible: false }); }.bind(pinInfobox)); 

así que aquí está su código actualizado:

 function createMapPin(latLong, sName) { var pinImg = "imagespins/Good.png"; var pin = new Microsoft.Maps.Pushpin(latLong, { icon: pinImg, anchor: new Microsoft.Maps.Point(8, 8), draggable: true, width: 48, height: 48 }); pin.title = sName; var pinInfobox = new Microsoft.Maps.Infobox(pin.getLocation(), { title: 'My Pushpin', description: 'This pushpin is located at (0,0).', visible: false, offset: new Microsoft.Maps.Point(0, 15) }); // Add handlers for the pushpin events Microsoft.Maps.Events.addHandler(pin, 'click', function(e) { this.setOptions({ visible: true }); }.bind(pinInfobox)); // Hide the infobox when the map is moved. Microsoft.Maps.Events.addHandler(map, 'viewchange', function(e) { this.setOptions({ visible: false }); }.bind(pinInfobox)); map.entities.push(pin); map.entities.push(pinInfobox); return pin; }