Javascript-форум (https://javascript.ru/forum/)
-   Библиотеки/Тулкиты/Фреймворки (https://javascript.ru/forum/library-toolkit-framework/)
-   -   LeaFlet + LeaFlet.Search, поиск по нескольким слоям (https://javascript.ru/forum/library-toolkit-framework/57434-leaflet-leaflet-search-poisk-po-neskolkim-sloyam.html)

POS_troi 03.08.2015 17:16

LeaFlet + LeaFlet.Search, поиск по нескольким слоям
 
Приветствую уважаемое сообщество.

Пытаюсь разобраться с LeaFlet. С выводом самой карты и маркеров всё понятно то вот с LeaFlet.search я проблемы решить не могу.

На карту накладывается два набора маркеров, в свою очередь их получаю из GeoJSON файла

Пример GeoJSON

{
"type": "Feature",
"properties": {
  "name": "Что-то этакое",
  "category": "категория 1",
  "popupContent": "Какое-то описание",
  "icon": "green"
  },
"geometry":{
  "type": "Point",
  "coordinates": [37.60869026184082,48.8507382697713]
  }
}


Часть получения GeoJSON данных

function onEachFeature(feature, layer) {
    if (feature.properties && feature.properties.popupContent) {
        layer.bindPopup(feature.properties.popupContent);
    }
};

function setMarkerIcon(feature, latlng) {
    var marker = new L.Marker(latlng, {icon: set_icon(feature.properties.icon)});
    return marker
}


function getMarkers(json_url) {
    var sLayer = new L.GeoJSON.AJAX(json_url, {
        onEachFeature: onEachFeature,
        pointToLayer: setMarkerIcon,
    });
    return sLayer
}



Добавляю поисковый контрол на карту
markersLayer = getMarkers('ololo.olol/data.geojson');
map.addControl( new L.Control.Search({
        layer: markersLayer,
        propertyName: 'name',
    }) );


Поиск по полю 'name', работает просто замечательно.

Вот с этого места у меня начинаются проблемы, я не понимаю как добавить второй набор координат в поиск.
К примеру если объединить наборы в группу

markersLayer0 = getMarkers('ololo.olol/data0.geojson');
markersLayer1 = getMarkers('ololo.olol/data1.geojson');
groupLayer = new L.LayerGroup();

map.addControl( new L.Control.Search({
        layer: groupLayer ,
        propertyName: 'name',
    }) );

map.addLayer(groupLayer );
groupLayer .addLayer(markersLayer0);
groupLayer .addLayer(markersLayer1);


Тут поиск перестаёт работать по любому из слоёв и я не понимаю как решить эту задачу.
Хотя судя по примерам да и исходникам LeaFlet.search, на вход в 'layers:' принимает "L.LayerGroup()" и теоретически должен без проблем обрабатывать группу.

Сильно не пинайте - за предположительную кривость кода :)

POS_troi 05.08.2015 13:00

Спасибо всем :)
Задачу решил, пуллреквест отправил.
https://github.com/stefanocudini/lea.../pull/79/files


Часовой пояс GMT +3, время: 17:32.