2013-07-23 6 views
6

Używam modułu ulotki drupal i chcę mieć wyskakujące okienko po kliknięciu, a następnie przesuwanie kursora myszy, aby wyświetlić się w rogu po najechaniu myszą. Obecnie mam wyskakujące okienko, ale nie mogę dodać pozycji kursora myszy. Wszędzie czytałem mówi, że można dodać mouseover do funkcji z obiektem GeoJson, ale nie wygląda na to, że mam dostęp do tego obiektu za pomocą tego modułu.Tutaj jest mój kod Js.Jak zrobić wyskakujące okienko i unieść się z wtyczką js do wtyczki?

(function ($) { 
Drupal.behaviors.maps = { 
attach:function (context, settings) { 

    // Add legends to each leaflet map instance in Drupal's settings array 
    $(settings.leaflet).each(function() { 
    // Get the map object from the current iteration 
    var map = this.lMap; 

    // Create a legend class that will later be instantiated and added to the map 
    var legend = L.Control.extend({ 
     options: { 
     position: 'bottomleft' 
     }, 

     onAdd: function (map) { 
     // create the control container div with classes 
     var container = L.DomUtil.create('div', 'info legend'); 

     var html = '<h1>Status</h1>'; 
     html += '<ul>'; 
     html += ' <li><span class="color home"></span> Available Home</li>'; 
     html += ' <li><span class="color lot"></span> Available Lot</li>'; 
     html += ' <li><span class="color not-available"></span> Not Available</li>'; 
     html += '</ul>'; 
     container.innerHTML = html; 

     return container; 
     } 
    }); 
    map.scrollWheelZoom.disable(); 
    map.addControl(new legend()); 
    }); 
} 
}; 
})(jQuery); 

mam pracę podręczne, muszę dodaj przy aktywowaniu do każdej funkcji, w jaki sposób mogę to zrobić

Odpowiedz

3

Podczas tworzenia warstwy GeoJSON, można przekazać funkcje:

onEachFeature określa jakie funkcje mają być nazywane w zależności od przypadku:

var onEachFeature = function onEachFeature(feature, layer) { 
     layer.on({ 
      mouseover: highlightFeature, 
      mouseout: resetHighlight, 
      click: zoomToFeature, 
      pointToLayer: pointToLayer 
     }); 
    }; 

przykładem funkcji mouseover:

function highlightFeature(e) { 
    var layer = e.target; 

    layer.setStyle({ // highlight the feature 
     weight: 5, 
     color: '#666', 
     dashArray: '', 
     fillOpacity: 0.6 
    }); 

    if (!L.Browser.ie && !L.Browser.opera) { 
     layer.bringToFront(); 
    } 
    map.info.update(layer.feature.properties); // Update infobox 
} 

Trzeba zmodyfikować powyższy kod, aby dopasować swój projekt, ale to pokazuje, jak można dostać najedź na każdą działającą funkcję.

+2

Problem polega na tym, że nie utworzę ręcznie warstwy geoJson. Z modułem Drupal przekazuję dane do funkcji "leaflet_render_map", więc bez bezpośredniej edycji modułu ulotki, nie mam bezpośredniego dostępu do obiektu geoJson – jakecraige

Powiązane problemy