2014-09-05 1 views
0

Я пытаюсь понять популярный учебник JS in this.Как Лифлет понимает параметр «e» в учебнике Chloropleth?

Суть учебника - это функция, которая передает параметр 'e' функции. Свойство 'e' target является саморегуляционным слоем функции.

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

    layer.setStyle({ 
     weight: 5, 
     color: '#666', 
     dashArray: '', 
     fillOpacity: 0.7 
    }); 

    if (!L.Browser.ie && !L.Browser.opera) { 
     layer.bringToFront(); 
    } 
} 

Как JavaScript понимает 'e'? Когда обратные вызовы функции выполняются, параметр не передается функции как переменная в прослушиватель событий.

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

ответ

2

В http://leafletjs.com/examples/choropleth.html ...

Сначала мы определим слушатель событий для события слоя наведения курсора мыши

е событие Mouseover

Таким образом, последовательность, как что

  1. Слой GeoJSON находит функции и создает слои из них
  2. Каждый раз, когда слой (например, L.Polygon) создаются, вы перезвонили с onEachFeature
  3. Вы можете прикрепить прослушиватель событий к слою (например, Mouseover)
  4. Позже, когда этот слой получает событие наведения мыши, он пошлет событие (е) обратно к вам

Примечание: если вам нужны ваши свойства функций GeoJSON к тому времени, получить событие курсора, находящегося с вашего слоя, просто держать их в объект слоя в onEachFeature обратного вызова

layer.properties = feature.properties; 

Отметьте это JSFiddle, где цвет определен в свойствах geojson

+0

Я вижу, что это вложенный объект, который захватывает событие. Если я хочу получить свойство слоя, то я использую mouseover-ing, потянув его функцию из своего файла geojson, как я могу это сделать? Имеет ли это смысл? –

Смежные вопросы