2016-04-13 6 views
1

Я пытаюсь отфильтровать свои маркеры на основе ввода текста пользователя, но я не уверен, как заставить его работать. Я использую javascript и leaflet.js. Это пример кода с жестко запрограммированным фильтром, но я хочу иметь возможность фильтровать данные на основе пользовательского ввода.маркеры фильтров на основе пользовательского ввода sheetlet.js

var stops = L.geoJson(points, { 
    onEachFeature: function (feature, layer) //functionality on click on feature 
    { 
    layer.bindPopup(String('Stop Name:' + ' ' + feature.properties.Stop_Name + '</br>' + 'Route:' + ' ' + feature.properties.Route)); 

    layer.on('mouseover', function (e) { 
     this.openPopup(); 
    }); 
    layer.on('mouseout', function (e) { 
     this.closePopup(); 
    }); 


    } 
    , filter: function(feature, layer) { 
    return feature.properties.Route == '10'; 
}}); 

есть способ установки

filter:function(feature, layer){ return feature.properties.Route == 'USER INPUT';} 

я уже есть окно поиска на моей странице, но не знаете, как разобрать результат в фильтр.

ответ

1

Вы можете добавить новый geojson, используя пользовательский ввод в качестве фильтра, используя прослушиватель событий или on ('click') или .submit, что-то, чтобы захватить вход и поместить его в переменную, а затем вызвать функцию, которая добавляет новый geojson.

Что-то вроде:

function onSubmit() { 
    var results = L.geoJson(null, { 
    filter: function(feature, layer) { 
     return feature.properties.zonecode == userinput; 
    } 
    }).addTo(map); 
    results.addData(stops.toGeoJSON()); 
} 

Вы должны удалить старые результаты и добавлять новые, но это должно вам начать работу.

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