2008-11-25 8 views
7

¿Es posible hacer que la visualización del cuadro de información de la chincheta Virtual Earth responda desde onclick en lugar de mouseover?Hacer que la casilla de información de tierra virtual aparezca al hacer clic en lugar de desplazarse?

Actualmente estoy usando algo como esto:

...

var pin = new VEShape(
        VEShapeType.Pushpin, 
        [location] 
       ); 
    pin.SetCustomIcon(icon_url); 
    pin.SetTitle(title); 
    pin.SetDescription(info_window_template); 
    map.AddShape(pin); 

    document.getElementById(pin.GetPrimitive().iid).onmouseover = EventHandlerOnMouseOver; 
} 

var EventHandlerOnMouseOver = function(e) { 
    // Handle content loading... 
} 

...

Sin embargo, si intento cambiar el onmouseover a onclick, VE recoge onclick y deshabilita la caja de información por completo.

Respuesta

1

Puede lograr lo que describe a través del uso de eventos ... tenga en cuenta que estoy usando Virtual Earth 6.2.

El truco consiste en suprimir el evento onmouseover y suscribirse al evento onclick. Cuando haya descubierto si el usuario hizo clic en una forma o no, puede llamar al método ShowInfoBox en el control de mapa para forzarlo a mostrar la casilla de información.

Y aquí es teh codez =)

// Begin by supressing the onmouseover event. Returning true 
// from an event handler disables the default Virtual Earth action 
map.AttachEvent('onmouseover', function(e) { if(e.elementID) return true; }); 

// Subscribe to the onclick event and react whenever we get an element id 
map.AttachEvent("onclick", function(e) { 

    // elementID is null when someone clicks on the map and not on a shape 
    if(e.elementID) { 

     var shape = map.GetShapeByID(e.elementID); 
     if(shape) map.ShowInfoBox(shape); 
    } 
}); 

Tenga en cuenta que la caja de información mostrará incluso si hace clic derecho sobre la forma; para evitar esto, miraría las propiedades leftMouseButton o rightMouseButton en el event object.

Referencias:

Cuestiones relacionadas