3

誰かがグーグルjquery.ui.mapプラグインにある次のコードスニペット( jQuery.fn[name])の意味を説明できますか?

jQuery.each(('click mousedown rightclick dblclick mouseover mouseout drag dragend').split(' '), function(i, name) {
    jQuery.fn[name] = function(a, b) {
        return this.addEventListener(name, a, b);
    };
});

また、コールバック関数をマップオブジェクトのクリックイベントにバインドする方法についても、次のことを試しましたが、属性がありeventません。latLng

$('#map_canvas').gmap().click(function(event) {
        alert(event.latLng);
    });

前もって感謝します。

4

4 に答える 4

6

このコードスニペットは、一部のjQueryメソッドを上書きして、一部のGoogleマップオブジェクトで使用できるようにします。例えば

    var map = $('#map_canvas').gmap('get', 'map')
    $(map).click(function() {
        var self = this; // this is the map object
    });

    $('#map_canvas').gmap('addMarker', { ... }).click(function() {
        var self = this; // this refers to the marker object
    }).hover(function() {
         var self = this; // this refers to the marker object
    });

Zoom_changedなどの他のイベントをバインドする必要がある場合は、

var map = $('#map_canvas').gmap('get', 'map');
$(map).addEventListener('zoom_changed', function() {

});
于 2012-05-18T20:35:58.783 に答える
1

あなたはあなた自身の質問に答えました:)イベントをGoogleマップにバインドしたい場合は、使用する必要がありますthis.addEventListener(name, a, b);(これは、実際には特定のイベントで関数を実行できるようにするコードです。以下を参照してください)

例:

 google.maps.event.addListener(my_map_object, 'click', function() {
    my_map_object.setZoom(8);
    alert("I've just zoomed by clicking the map!");
 });

マップオブジェクト、またはマップに配置した任意のマーカーにイベントを追加できます。

詳細な説明については、 https://developers.google.com/maps/documentation/javascript/eventsを参照してください。Google Maps APIには良い使用例があり、それらから多くを学ぶことができます:)

于 2012-05-09T10:03:30.883 に答える
1
google.maps.event.addListener(marker, 'mouseover', function() {
 $('.hover_div').html('<a target="_blank" href="'+marker.url+'">'+marker.hover + marker.title +'</a>').show();
});

また

    google.maps.event.addListener(marker, 'click', function() {
      window.open(
  marker.url,
  '_blank' // <- This is what makes it open in a new window.
);

プラグインは作業を制限するため、使用しません。自分で地図を作成する方法を読んでみてください。

于 2012-05-09T10:05:51.920 に答える
0

ページからすべてのイベントを盗んでマップに再割り当てすると、委任されたイベントが機能しなくなることがわかりました。たとえば、trigger()別の要素をクリックしようとしても機能しません。例-イベントリスナーの設定がon("click")引き続き機能する場合、プログラムで起動されたクリックをリッスンしなくなります。

ファイルの自分のコピーのコードを変更しました。ここでは、誰かが興味を持っている場合に備えています。関数の「名前」を変更して、先頭に「マップ」を追加し、元のメソッドの最初の文字を大文字にします。

click()への変更、へmapClickdragend変更mapDragendなど。

jQuery.each(('click rightclick dblclick mouseover mouseout drag dragend').split(' '), function (i, name) {
        jQuery.fn["map" + name[0].toUpperCase() + name.substr(1)] = function (a, b) {
            return this.addEventListener(name, a, b);
        }
});
于 2015-08-10T14:47:06.477 に答える