2013-03-29 14 views
6

Мое веб-приложение django должно выполнить следующие действия: передать объект Geojson в представление, отобразить точки с лифтом и отобразить дополнительную информацию, когда пользователь нажимает на маркер точки. Я не очень хорошо знаком с js, поэтому я завязал привязку нужного типа данных к событию click. Вот пример объекта geojson. Как я могу получить доступ к «id» с моим click событием?JS-листовка: Как пройти (Geo-) идентификатор json до события click?

var geojsonFeature = {'geometry': 
          {'type': 'MultiPoint', 
          'coordinates': [[4.939, 52.33], [4.9409, 52.33]] 
          }, 
        'type': 'Feature', 
        'properties': 
         {'id': '52','popupContent': 'id=52'} 
        }; 

Добавление объекта GeoJSON на карте ..

var gj = L.geoJson(geojsonFeature, { 
    pointToLayer: function (feature, latlng) { 
    return L.circleMarker(latlng, geojsonMarkerOptions); 
    }}).addTo(map); 

И on() -Щелкните ....

gj.on('click', function(evt) { 
    alert(id) // well, this is where I need help 
}); 

Примечание: Я не хочу использовать что-то вроде bindPopup(feature.properties.popupContent), потому что я хочу открыть новое окно, которое вызывает другое представление django с некоторыми дополнительными данными из базы данных.

ответ

13

Для всех с аналогичной проблемой: то, что вы хотите использовать, - это функция onEachFeature. Функция представляет объект geojson. Используя данные примера, приведенные выше, идентификатор можно получить через feature.properties.popupContent.

function onEachFeature(feature, layer) { 
    layer.on('click', function (e) { 
     alert(feature.properties.popupContent); 
     //or 
     alert(feature.properties.id); 
    }); 
} 
+0

любит тебя дружок после того, как поиск одной ночи я получил этот ответ. –

2

После попытки решения размещенного выше, без успеха, я получил эту версию работы:

function onEachFeature(feature, layer) { 
    layer.on('click', function (e) { 
     alert(e.target.feature.properties.popupContent); 
     //or 
     alert(e.target.feature.properties.id); 
    }); 
}