Map
Changes
web-map/Scripts/SiteScripts/Events.js 66(+31 -35)
web-map/Scripts/SiteScripts/Init.js 5(+3 -2)
Details
diff --git a/web-map/Scripts/SiteScripts/AjaxQuery.js b/web-map/Scripts/SiteScripts/AjaxQuery.js
index 22e5d85..d191d04 100644
--- a/web-map/Scripts/SiteScripts/AjaxQuery.js
+++ b/web-map/Scripts/SiteScripts/AjaxQuery.js
@@ -43,10 +43,10 @@ function GetAllPoints(YearMin, YearMax) {
// Нужно ли делать выборку
// |
// |
- // | фильтры
- // | |
- // | |
- FillDataArrays(data, true, false);
+ // |
+ // |
+ // |
+ FillDataArrays(data, true);
},
error: function (response) {
web-map/Scripts/SiteScripts/Events.js 66(+31 -35)
diff --git a/web-map/Scripts/SiteScripts/Events.js b/web-map/Scripts/SiteScripts/Events.js
index 969ebb9..713ea30 100644
--- a/web-map/Scripts/SiteScripts/Events.js
+++ b/web-map/Scripts/SiteScripts/Events.js
@@ -24,7 +24,7 @@ function changePlacemarkPreset(placemark, preset) {
// Заполнение массивов из исходного (response.data)
// В соответствии с параметрами поселения
-function FillDataArrays(fromData, isNeedSelect = false, isNeedFilters = false) {
+function FillDataArrays(fromData, isNeedSelect = false) {
Collections.AllGeoObjects.removeFromMap(Map);
@@ -34,8 +34,7 @@ function FillDataArrays(fromData, isNeedSelect = false, isNeedFilters = false) {
Collections.Regions = new Array();
Collections.Names = new Array();
Collections.FindName = '';
-
- console.log('Количество загруженных поселений ' + fromData.arraySettlements.length);
+ Collections.isNeedFilters = false;
Collections.Names = fromData.arrayNameSettlements;
Collections.SettlementTypes = fromData.arrayNameTypes;
@@ -46,51 +45,47 @@ function FillDataArrays(fromData, isNeedSelect = false, isNeedFilters = false) {
filterCollectionInit(Collections.Filters.Region, Collections.Regions, 'filterGroupRegions', 'countRegions');
Collections.All = fromData.arraySettlements;
- LoadCollection(fromData.arraySettlements, isNeedSelect, isNeedFilters);
+ LoadCollection(fromData.arraySettlements, isNeedSelect, );
}
// Функция заполнения Яндекс-коллекций Яндекс-объектами из JSON массива
-function LoadCollection(fromData, isNeedSelect = false, isNeedFilters = false) {
+function LoadCollection(fromData, isNeedSelect = false) {
fromData.forEach(function (element) {
Collections.AllGeoObjects = Collections.AllGeoObjects.add(CreateYandexPlacemark(element)); // Добавление
});
if (isNeedSelect)
- SelectDataFromArrays(isNeedFilters);
+ SelectDataFromArrays();
}
// Согласно текущим установленным фильтрам собрать нужный массив данных
-function SelectDataFromArrays(isNeedFilters = false) {
- var ResultDataArray = new Array();
-
- console.log("select with " + isNeedFilters);
- isNeedFilters=false;
+function SelectDataFromArrays() {
var insideMap = Collections.AllGeoObjects.searchInside(Map);
+
var afterFilters = new ymaps.geoQuery();
- if (!isNeedFilters)
+ if (!Collections.isNeedFilters)
afterFilters = insideMap;
else
- {
- var typeFilters = new ymaps.geoQuery();
- var regionFilters = new ymaps.geoQuery();
-
- // тут применить фильтры
- // объединить по признаку типа
- // объединить по признаку региона
- // пересечь две выборки
-
- for (e in Collections.Filters.Type) {
- if (Collections.Filters.Type[e]) {
- typeFilters = insideMap.search('options.Types regexp "{|' + e + '}"').add(regionFilters);
- }
+ {
+ var typeFilters = new ymaps.geoQuery();
+ var regionFilters = new ymaps.geoQuery();
+
+ // тут применить фильтры
+ // объединить по признаку типа
+ // объединить по признаку региона
+ // пересечь две выборки
+
+ for (e in Collections.Filters.Type) {
+ if (Collections.Filters.Type[e]) {
+ typeFilters = insideMap.search('options.Types regexp "{' + e + '}"').add(typeFilters);
}
- for (e in Collections.Filters.Region) {
- if (Collections.Filters.Region[e]) {
- regionFilters = insideMap.search('options.Regions regexp "{' + e + '}"').add(regionFilters);
- }
+ }
+ for (e in Collections.Filters.Region) {
+ if (Collections.Filters.Region[e]) {
+ regionFilters = insideMap.search('options.Regions regexp "{' + e + '}"').add(regionFilters);
}
-
- afterFilters = typeFilters.intersect(regionFilters);
}
+ afterFilters = typeFilters.intersect(regionFilters).sort('options.Population desc');
+ }
//filterTypes = all.search('options.Regions regExp "*|gorod|*"')
@@ -118,7 +113,7 @@ function SelectDataFromArrays(isNeedFilters = false) {
//if (isNeedPlaceCollection)
// PlaceFromCollection(geo_query);
- return ResultDataArray;
+ // return ResultDataArray;
}
@@ -325,7 +320,6 @@ function filterTypeChange(e) {
}
function defaultFilters() {
-
for (e in Collections.Filters.Type) {
Collections.Filters.Type[e] = true;
}
@@ -336,11 +330,13 @@ function defaultFilters() {
$("#filterGroups input").each(function (index, element) {
element.checked = true;
});
- SelectDataFromArrays(false);
+ Collections.isNeedFilters = false;
+ SelectDataFromArrays();
//console.log($("#filterGroupRegions")[0].children);
}
function activeFilters() {
- SelectDataFromArrays(true);
+ Collections.isNeedFilters = true;
+ SelectDataFromArrays();
}
web-map/Scripts/SiteScripts/Init.js 5(+3 -2)
diff --git a/web-map/Scripts/SiteScripts/Init.js b/web-map/Scripts/SiteScripts/Init.js
index e13b71b..8d96cfb 100644
--- a/web-map/Scripts/SiteScripts/Init.js
+++ b/web-map/Scripts/SiteScripts/Init.js
@@ -3,8 +3,8 @@
function MapInit()
{
console.log("MapInit");
- YandexMapInit();
CollectionsInit();
+ YandexMapInit();
GetDate(true);
}
@@ -46,7 +46,7 @@ function YandexMapInit()
// Выгрузить коллекцию на карту
// |
// |
- SelectDataFromArrays(false);
+ SelectDataFromArrays();
// фильтрация поселений при зуммировании
//CurrentZoom = event.get('newZoom');
@@ -236,4 +236,5 @@ function CollectionsInit() {
Collections.Filters = new Object();
Collections.Filters.Type = new Object();
Collections.Filters.Region = new Object();
+ Collections.isNeedFilters = false;
}
\ No newline at end of file