Bing Maps Нажмите на событие на булавке - PullRequest
1 голос
/ 21 февраля 2011

Как я могу настроить функцию обратного вызова для события щелчка на булавке? Мне нужны оба контакта: зеленый (одно местоположение) и красный (кластерное расположение). Я использую API v6.

Это код на данный момент:

var shape = new VEShape(VEShapeType.Pushpin, new VELatLong(pin.position.lat, pin.position.lng));
shape.SetTitle('<h2>'+pin.overlay.headline+'</h2>');
shape.SetDescription('<p>'+pin.overlay.text+'</p>');

var pinIcon = new VECustomIconSpecification();
pinIcon.Image = '/images/map/pin.png';
pinIcon.TextContent = '.';
shape.SetCustomIcon(pinIcon);

Ответы [ 2 ]

3 голосов
/ 21 марта 2011

Правильный способ сделать это - переопределить функции onclick и onmouseover в VEMap.AttachEvent ();AttachEvent имеет много возвращаемых значений, полезных для определения того, какой контакт вы щелкаете мышью, например, pinID (возвращаемое значение elementID для метода VEMap.onclick ()).

Вы можете использовать идентификатор в сочетании с map.ShowInfoBox() и map.GetShapeByID, чтобы отображать вашу инфобокс при нажатии.

READ: VEMap.AttachEvent <- Google, что я вставил бы URL-адрес, но мне нужно больше повторений в StackOverflow </p>

ЧИТАЙТЕ: VEMap.onclick.Также, поймите возвращаемые значения:

READ Все события мыши http://msdn.microsoft.com/en-us/library/bb412438.aspx

/*************************************
 * Code snippets..
 * For example purposes I'm going to do 
 * things a bit out of order.
*************************************/

// Attach your events in the map load callback:
map.AttachEvent("onmouseover", myFnForMouseOver);
map.AttachEvent("onclick", myFnForOnClick);


// Callback functions used in the AttachEvent(s) above..
function myFnForMouseOver(e){
    if(e.elementID){
        return true; // Disables the rollover ShowInfoBox()
    }
}

function myFnForOnClick(e){
    if(e.elementID){
        // Show infobox using the PINs/Shapes actual ID, (return value from e.elementID)
        map.ShowInfoBox(map.GetShapeByID(e.elementID)); 
        return true;
    }
}

/*
 * end 
 */

Вот и все

  • R Бейкер
3 голосов
/ 22 февраля 2011

Вы не ограничены настройкой только текста и изображения булавки - вы можете использовать свойство CustomHTML, чтобы указать его как элемент HTML.Это позволяет вам обрабатывать клики или любые другие события на нем.

Простой пример будет иметь изображение булавки HTML с встроенным обработчиком кликов:

pinIcon.CustomHTML = "<img onclick='alert(\"tadaa\")' src='/images/map/pin.png' />";

Если вы отделяете код от разметкиНапример, используя jQuery, вы можете указать идентификатор элемента булавки и использовать его позже, чтобы связать с ним обработчик щелчков.Например:

pinIcon.CustomHTML = "<img id='pin' src='/images/map/pin.png' />";
shape.SetCustomIcon(pinIcon);
...
map.AddShape(shape);
$("#pin").click(function() { alert("tadaa"); });
...