Skip to content
Snippets Groups Projects
Commit 03dc120c authored by Glenn Vorhes's avatar Glenn Vorhes
Browse files

sorted features

parent 2026da9c
No related branches found
No related tags found
No related merge requests found
...@@ -6,11 +6,6 @@ export declare class SortedFeatures { ...@@ -6,11 +6,6 @@ export declare class SortedFeatures {
sortedFeatures: Feature[]; sortedFeatures: Feature[];
propertyName: string; propertyName: string;
_propertyType: string; _propertyType: string;
/**
*
* @param {Array<Feature>} features array of ol features
* @param {string} propertyName - the property name to use for lookup
*/
constructor(features: Feature[], propertyName: string); constructor(features: Feature[], propertyName: string);
/** /**
* recursive search to find the value * recursive search to find the value
......
...@@ -9,11 +9,6 @@ let nm = provide_1.default('olHelpers'); ...@@ -9,11 +9,6 @@ let nm = provide_1.default('olHelpers');
* take an array of features and sort by a given property name * take an array of features and sort by a given property name
*/ */
class SortedFeatures { class SortedFeatures {
/**
*
* @param {Array<Feature>} features array of ol features
* @param {string} propertyName - the property name to use for lookup
*/
constructor(features, propertyName) { constructor(features, propertyName) {
this.sortedFeatures = features; this.sortedFeatures = features;
this.propertyName = propertyName; this.propertyName = propertyName;
...@@ -52,61 +47,62 @@ class SortedFeatures { ...@@ -52,61 +47,62 @@ class SortedFeatures {
* @returns {Feature|undefined} the feature matching the lookup * @returns {Feature|undefined} the feature matching the lookup
*/ */
getFeature(propertyValue, exactMatch = false, sortedFeatures) { getFeature(propertyValue, exactMatch = false, sortedFeatures) {
if (typeof sortedFeatures == 'undefined') { // if (typeof sortedFeatures == 'undefined'){
sortedFeatures = this.sortedFeatures; // sortedFeatures = this.sortedFeatures;
} // }
if (sortedFeatures.length == 0) { //
return undefined; //
} // if (sortedFeatures.length == 0){
if (sortedFeatures.length == 1) { // return undefined;
if (exactMatch) { // }
if (sortedFeatures[0].getProperties()[this.propertyName] == propertyValue) { //
return sortedFeatures[0]; // if (sortedFeatures.length == 1){
} // if (exactMatch){
else { // if (sortedFeatures[0].getProperties()[this.propertyName] == propertyValue){
return undefined; // return sortedFeatures[0];
} // } else {
} // return undefined;
else { // }
return sortedFeatures[0]; // } else {
} // return sortedFeatures[0];
} // }
let lowProp = sortedFeatures[0].getProperties()[this.propertyName]; // }
let highProp = sortedFeatures[sortedFeatures.length - 1].getProperties()[this.propertyName]; //
if (exactMatch) { // let lowProp = sortedFeatures[0].getProperties()[this.propertyName];
if (lowProp == propertyValue) { // let highProp = sortedFeatures[sortedFeatures.length - 1].getProperties()[this.propertyName];
return sortedFeatures[0]; //
} // if (exactMatch){
else if (propertyValue < lowProp) { // if (lowProp == propertyValue){
return undefined; // return sortedFeatures[0];
} // } else if (propertyValue < lowProp){
else if (highProp == propertyValue) { // return undefined;
return sortedFeatures[sortedFeatures.length - 1]; // } else if (highProp == propertyValue){
} // return sortedFeatures[sortedFeatures.length - 1];
else if (propertyValue > highProp) { // } else if (propertyValue > highProp){
return undefined; // return undefined;
} // }
} // } else {
else { // if (propertyValue <= lowProp){
if (propertyValue <= lowProp) { // return sortedFeatures[0];
return sortedFeatures[0]; // } else if (propertyValue >= highProp){
} // return sortedFeatures[sortedFeatures.length - 1];
else if (propertyValue >= highProp) { // }
return sortedFeatures[sortedFeatures.length - 1]; // }
} //
} // let midIndex = Math.floor(sortedFeatures.length / 2);
let midIndex = Math.floor(sortedFeatures.length / 2); // let midFeature = sortedFeatures[midIndex];
let midFeature = sortedFeatures[midIndex]; // let midProperty = midFeature.getProperties()[this.propertyName];
let midProperty = midFeature.getProperties()[this.propertyName]; //
if (midProperty === propertyValue) { // if (midProperty === propertyValue){
return midFeature; // return midFeature;
} // }
if (propertyValue < midProperty) { //
return this.getFeature(propertyValue, exactMatch, sortedFeatures.slice(0, midIndex)); // if (propertyValue < midProperty){
} // return this.getFeature(propertyValue, exactMatch, sortedFeatures.slice(0, midIndex));
else { // } else {
return this.getFeature(propertyValue, exactMatch, sortedFeatures.slice(midIndex)); // return this.getFeature(propertyValue, exactMatch, sortedFeatures.slice(midIndex));
} // }
return null;
} }
} }
exports.SortedFeatures = SortedFeatures; exports.SortedFeatures = SortedFeatures;
......
{"version":3,"file":"SortedFeatures.js","sourceRoot":"","sources":["../../src/olHelpers/SortedFeatures.ts"],"names":[],"mappings":";;AAAA;;GAEG;AACH,6CAAsC;AAEtC,IAAI,EAAE,GAAG,iBAAO,CAAC,WAAW,CAAC,CAAC;AAE9B;;GAEG;AACH,MAAa,cAAc;IAKvB;;;;OAIG;IACH,YAAY,QAAmB,EAAE,YAAoB;QACjD,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QAEjC,wCAAwC;QACxC,6FAA6F;QAC7F,EAAE;QACF,4BAA4B;QAC5B,sEAAsE;QACtE,+CAA+C;QAC/C,yGAAyG;QACzG,iCAAiC;QACjC,4BAA4B;QAC5B,uBAAuB;QACvB,+CAA+C;QAC/C,gBAAgB;QAChB,sDAAsD;QACtD,sEAAsE;QACtE,sEAAsE;QACtE,+CAA+C;QAC/C,+CAA+C;QAC/C,EAAE;QACF,mCAAmC;QACnC,4BAA4B;QAC5B,uBAAuB;QACvB,gDAAgD;QAChD,gBAAgB;QAChB,YAAY;QACZ,UAAU;QACV,IAAI;IACR,CAAC;IAED;;;;;;OAMG;IACH,UAAU,CAAC,aAA4B,EAAE,aAAsB,KAAK,EAAE,cAA+B;QACjG,IAAI,OAAO,cAAc,IAAI,WAAW,EAAC;YACrC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;SACxC;QAGD,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,EAAC;YAC3B,OAAO,SAAS,CAAC;SACpB;QAED,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,EAAC;YAC3B,IAAI,UAAU,EAAC;gBACX,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,aAAa,EAAC;oBACtE,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC;iBAC5B;qBAAM;oBACH,OAAO,SAAS,CAAC;iBACpB;aACJ;iBAAM;gBACH,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC;aAC5B;SACJ;QAED,IAAI,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACnE,IAAI,QAAQ,GAAG,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE5F,IAAI,UAAU,EAAC;YACX,IAAI,OAAO,IAAI,aAAa,EAAC;gBACzB,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC;aAC5B;iBAAM,IAAI,aAAa,GAAG,OAAO,EAAC;gBAC/B,OAAO,SAAS,CAAC;aACpB;iBAAM,IAAI,QAAQ,IAAI,aAAa,EAAC;gBACjC,OAAO,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;aACpD;iBAAM,IAAI,aAAa,GAAI,QAAQ,EAAC;gBACjC,OAAO,SAAS,CAAC;aACpB;SACJ;aAAM;YACH,IAAI,aAAa,IAAI,OAAO,EAAC;gBACzB,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC;aAC5B;iBAAM,IAAI,aAAa,IAAI,QAAQ,EAAC;gBACjC,OAAO,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;aACpD;SACJ;QAED,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACrD,IAAI,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,WAAW,GAAG,UAAU,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEhE,IAAI,WAAW,KAAM,aAAa,EAAC;YAC/B,OAAO,UAAU,CAAC;SACrB;QAED,IAAI,aAAa,GAAG,WAAW,EAAC;YAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;SACxF;aAAM;YACH,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,EAAE,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;SACrF;IACL,CAAC;CACJ;AA1GD,wCA0GC;AAED,EAAE,CAAC,cAAc,GAAG,cAAc,CAAC;AACnC,kBAAe,cAAc,CAAC","sourcesContent":["/**\r\n * Created by gavorhes on 12/23/2015.\r\n */\r\nimport provide from '../util/provide';\r\nimport Feature from 'ol/Feature';\r\nlet nm = provide('olHelpers');\r\n\r\n/**\r\n * take an array of features and sort by a given property name\r\n */\r\nexport class SortedFeatures {\r\n sortedFeatures: Feature[];\r\n propertyName: string;\r\n _propertyType: string;\r\n\r\n /**\r\n *\r\n * @param {Array<Feature>} features array of ol features\r\n * @param {string} propertyName - the property name to use for lookup\r\n */\r\n constructor(features: Feature[], propertyName: string) {\r\n this.sortedFeatures = features;\r\n this.propertyName = propertyName;\r\n\r\n // if (this.sortedFeatures.length > 0) {\r\n // this._propertyType = typeof this.sortedFeatures[0].getProperties()[this.propertyName];\r\n //\r\n // // let __this = this;\r\n // this.sortedFeatures.sort( (a: Feature, b: Feature) : number =>{\r\n // if (this._propertyType == 'number'){\r\n // let aMinusB = a.getProperties()[this.propertyName] - b.getProperties()[this.propertyName];\r\n // if (aMinusB == 0){\r\n // return 0;\r\n // } else {\r\n // return aMinusB > 0 ? 1 : -1;\r\n // }\r\n // } else if (this._propertyType == 'string'){\r\n // let propA = a.getProperties()[this.propertyName] || '';\r\n // let propB = b.getProperties()[this.propertyName] || '';\r\n // propA = propA.toString().trim();\r\n // propB = propB.toString().trim();\r\n //\r\n // if (propA == propB){\r\n // return 0;\r\n // } else {\r\n // return propA > propB ? 1 : 0;\r\n // }\r\n // }\r\n // });\r\n // }\r\n }\r\n\r\n /**\r\n * recursive search to find the value\r\n * @param {number|string} propertyValue - the property value to search for\r\n * @param {boolean} [exactMatch=false] if only an exact match should be returned\r\n * @param {Array} [sortedFeatures=this.sortedFeatures] - the candidate features\r\n * @returns {Feature|undefined} the feature matching the lookup\r\n */\r\n getFeature(propertyValue: number|string, exactMatch: boolean = false, sortedFeatures? :Array<Feature>): Feature {\r\n if (typeof sortedFeatures == 'undefined'){\r\n sortedFeatures = this.sortedFeatures;\r\n }\r\n\r\n\r\n if (sortedFeatures.length == 0){\r\n return undefined;\r\n }\r\n\r\n if (sortedFeatures.length == 1){\r\n if (exactMatch){\r\n if (sortedFeatures[0].getProperties()[this.propertyName] == propertyValue){\r\n return sortedFeatures[0];\r\n } else {\r\n return undefined;\r\n }\r\n } else {\r\n return sortedFeatures[0];\r\n }\r\n }\r\n\r\n let lowProp = sortedFeatures[0].getProperties()[this.propertyName];\r\n let highProp = sortedFeatures[sortedFeatures.length - 1].getProperties()[this.propertyName];\r\n\r\n if (exactMatch){\r\n if (lowProp == propertyValue){\r\n return sortedFeatures[0];\r\n } else if (propertyValue < lowProp){\r\n return undefined;\r\n } else if (highProp == propertyValue){\r\n return sortedFeatures[sortedFeatures.length - 1];\r\n } else if (propertyValue > highProp){\r\n return undefined;\r\n }\r\n } else {\r\n if (propertyValue <= lowProp){\r\n return sortedFeatures[0];\r\n } else if (propertyValue >= highProp){\r\n return sortedFeatures[sortedFeatures.length - 1];\r\n }\r\n }\r\n\r\n let midIndex = Math.floor(sortedFeatures.length / 2);\r\n let midFeature = sortedFeatures[midIndex];\r\n let midProperty = midFeature.getProperties()[this.propertyName];\r\n\r\n if (midProperty === propertyValue){\r\n return midFeature;\r\n }\r\n\r\n if (propertyValue < midProperty){\r\n return this.getFeature(propertyValue, exactMatch, sortedFeatures.slice(0, midIndex));\r\n } else {\r\n return this.getFeature(propertyValue, exactMatch, sortedFeatures.slice(midIndex));\r\n }\r\n }\r\n}\r\n\r\nnm.SortedFeatures = SortedFeatures;\r\nexport default SortedFeatures;\r\n\r\n"]} {"version":3,"file":"SortedFeatures.js","sourceRoot":"","sources":["../../src/olHelpers/SortedFeatures.ts"],"names":[],"mappings":";;AAAA;;GAEG;AACH,6CAAsC;AAEtC,IAAI,EAAE,GAAG,iBAAO,CAAC,WAAW,CAAC,CAAC;AAE9B;;GAEG;AACH,MAAa,cAAc;IAKvB,YAAY,QAAmB,EAAE,YAAoB;QACjD,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QAEjC,wCAAwC;QACxC,6FAA6F;QAC7F,EAAE;QACF,4BAA4B;QAC5B,sEAAsE;QACtE,+CAA+C;QAC/C,yGAAyG;QACzG,iCAAiC;QACjC,4BAA4B;QAC5B,uBAAuB;QACvB,+CAA+C;QAC/C,gBAAgB;QAChB,sDAAsD;QACtD,sEAAsE;QACtE,sEAAsE;QACtE,+CAA+C;QAC/C,+CAA+C;QAC/C,EAAE;QACF,mCAAmC;QACnC,4BAA4B;QAC5B,uBAAuB;QACvB,gDAAgD;QAChD,gBAAgB;QAChB,YAAY;QACZ,UAAU;QACV,IAAI;IACR,CAAC;IAED;;;;;;OAMG;IACH,UAAU,CAAC,aAA4B,EAAE,aAAsB,KAAK,EAAE,cAA+B;QACrG,iDAAiD;QACjD,gDAAgD;QAChD,QAAQ;QACR,EAAE;QACF,EAAE;QACF,uCAAuC;QACvC,4BAA4B;QAC5B,QAAQ;QACR,EAAE;QACF,uCAAuC;QACvC,2BAA2B;QAC3B,0FAA0F;QAC1F,4CAA4C;QAC5C,uBAAuB;QACvB,oCAAoC;QACpC,gBAAgB;QAChB,mBAAmB;QACnB,wCAAwC;QACxC,YAAY;QACZ,QAAQ;QACR,EAAE;QACF,0EAA0E;QAC1E,mGAAmG;QACnG,EAAE;QACF,uBAAuB;QACvB,yCAAyC;QACzC,wCAAwC;QACxC,+CAA+C;QAC/C,gCAAgC;QAChC,iDAAiD;QACjD,gEAAgE;QAChE,iDAAiD;QACjD,gCAAgC;QAChC,YAAY;QACZ,eAAe;QACf,yCAAyC;QACzC,wCAAwC;QACxC,iDAAiD;QACjD,gEAAgE;QAChE,YAAY;QACZ,QAAQ;QACR,EAAE;QACF,4DAA4D;QAC5D,iDAAiD;QACjD,uEAAuE;QACvE,EAAE;QACF,2CAA2C;QAC3C,6BAA6B;QAC7B,QAAQ;QACR,EAAE;QACF,wCAAwC;QACxC,gGAAgG;QAChG,eAAe;QACf,6FAA6F;QAC7F,QAAQ;QACJ,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAtGD,wCAsGC;AAED,EAAE,CAAC,cAAc,GAAG,cAAc,CAAC;AACnC,kBAAe,cAAc,CAAC","sourcesContent":["/**\r\n * Created by gavorhes on 12/23/2015.\r\n */\r\nimport provide from '../util/provide';\r\nimport Feature from 'ol/Feature';\r\nlet nm = provide('olHelpers');\r\n\r\n/**\r\n * take an array of features and sort by a given property name\r\n */\r\nexport class SortedFeatures {\r\n sortedFeatures: Feature[];\r\n propertyName: string;\r\n _propertyType: string;\r\n\r\n constructor(features: Feature[], propertyName: string) {\r\n this.sortedFeatures = features;\r\n this.propertyName = propertyName;\r\n\r\n // if (this.sortedFeatures.length > 0) {\r\n // this._propertyType = typeof this.sortedFeatures[0].getProperties()[this.propertyName];\r\n //\r\n // // let __this = this;\r\n // this.sortedFeatures.sort( (a: Feature, b: Feature) : number =>{\r\n // if (this._propertyType == 'number'){\r\n // let aMinusB = a.getProperties()[this.propertyName] - b.getProperties()[this.propertyName];\r\n // if (aMinusB == 0){\r\n // return 0;\r\n // } else {\r\n // return aMinusB > 0 ? 1 : -1;\r\n // }\r\n // } else if (this._propertyType == 'string'){\r\n // let propA = a.getProperties()[this.propertyName] || '';\r\n // let propB = b.getProperties()[this.propertyName] || '';\r\n // propA = propA.toString().trim();\r\n // propB = propB.toString().trim();\r\n //\r\n // if (propA == propB){\r\n // return 0;\r\n // } else {\r\n // return propA > propB ? 1 : 0;\r\n // }\r\n // }\r\n // });\r\n // }\r\n }\r\n\r\n /**\r\n * recursive search to find the value\r\n * @param {number|string} propertyValue - the property value to search for\r\n * @param {boolean} [exactMatch=false] if only an exact match should be returned\r\n * @param {Array} [sortedFeatures=this.sortedFeatures] - the candidate features\r\n * @returns {Feature|undefined} the feature matching the lookup\r\n */\r\n getFeature(propertyValue: number|string, exactMatch: boolean = false, sortedFeatures? :Array<Feature>): Feature {\r\n // if (typeof sortedFeatures == 'undefined'){\r\n // sortedFeatures = this.sortedFeatures;\r\n // }\r\n //\r\n //\r\n // if (sortedFeatures.length == 0){\r\n // return undefined;\r\n // }\r\n //\r\n // if (sortedFeatures.length == 1){\r\n // if (exactMatch){\r\n // if (sortedFeatures[0].getProperties()[this.propertyName] == propertyValue){\r\n // return sortedFeatures[0];\r\n // } else {\r\n // return undefined;\r\n // }\r\n // } else {\r\n // return sortedFeatures[0];\r\n // }\r\n // }\r\n //\r\n // let lowProp = sortedFeatures[0].getProperties()[this.propertyName];\r\n // let highProp = sortedFeatures[sortedFeatures.length - 1].getProperties()[this.propertyName];\r\n //\r\n // if (exactMatch){\r\n // if (lowProp == propertyValue){\r\n // return sortedFeatures[0];\r\n // } else if (propertyValue < lowProp){\r\n // return undefined;\r\n // } else if (highProp == propertyValue){\r\n // return sortedFeatures[sortedFeatures.length - 1];\r\n // } else if (propertyValue > highProp){\r\n // return undefined;\r\n // }\r\n // } else {\r\n // if (propertyValue <= lowProp){\r\n // return sortedFeatures[0];\r\n // } else if (propertyValue >= highProp){\r\n // return sortedFeatures[sortedFeatures.length - 1];\r\n // }\r\n // }\r\n //\r\n // let midIndex = Math.floor(sortedFeatures.length / 2);\r\n // let midFeature = sortedFeatures[midIndex];\r\n // let midProperty = midFeature.getProperties()[this.propertyName];\r\n //\r\n // if (midProperty === propertyValue){\r\n // return midFeature;\r\n // }\r\n //\r\n // if (propertyValue < midProperty){\r\n // return this.getFeature(propertyValue, exactMatch, sortedFeatures.slice(0, midIndex));\r\n // } else {\r\n // return this.getFeature(propertyValue, exactMatch, sortedFeatures.slice(midIndex));\r\n // }\r\n return null;\r\n }\r\n}\r\n\r\nnm.SortedFeatures = SortedFeatures;\r\nexport default SortedFeatures;\r\n\r\n"]}
\ No newline at end of file \ No newline at end of file
...@@ -13,11 +13,6 @@ export class SortedFeatures { ...@@ -13,11 +13,6 @@ export class SortedFeatures {
propertyName: string; propertyName: string;
_propertyType: string; _propertyType: string;
/**
*
* @param {Array<Feature>} features array of ol features
* @param {string} propertyName - the property name to use for lookup
*/
constructor(features: Feature[], propertyName: string) { constructor(features: Feature[], propertyName: string) {
this.sortedFeatures = features; this.sortedFeatures = features;
this.propertyName = propertyName; this.propertyName = propertyName;
...@@ -58,61 +53,62 @@ export class SortedFeatures { ...@@ -58,61 +53,62 @@ export class SortedFeatures {
* @returns {Feature|undefined} the feature matching the lookup * @returns {Feature|undefined} the feature matching the lookup
*/ */
getFeature(propertyValue: number|string, exactMatch: boolean = false, sortedFeatures? :Array<Feature>): Feature { getFeature(propertyValue: number|string, exactMatch: boolean = false, sortedFeatures? :Array<Feature>): Feature {
if (typeof sortedFeatures == 'undefined'){ // if (typeof sortedFeatures == 'undefined'){
sortedFeatures = this.sortedFeatures; // sortedFeatures = this.sortedFeatures;
} // }
//
//
if (sortedFeatures.length == 0){ // if (sortedFeatures.length == 0){
return undefined; // return undefined;
} // }
//
if (sortedFeatures.length == 1){ // if (sortedFeatures.length == 1){
if (exactMatch){ // if (exactMatch){
if (sortedFeatures[0].getProperties()[this.propertyName] == propertyValue){ // if (sortedFeatures[0].getProperties()[this.propertyName] == propertyValue){
return sortedFeatures[0]; // return sortedFeatures[0];
} else { // } else {
return undefined; // return undefined;
} // }
} else { // } else {
return sortedFeatures[0]; // return sortedFeatures[0];
} // }
} // }
//
let lowProp = sortedFeatures[0].getProperties()[this.propertyName]; // let lowProp = sortedFeatures[0].getProperties()[this.propertyName];
let highProp = sortedFeatures[sortedFeatures.length - 1].getProperties()[this.propertyName]; // let highProp = sortedFeatures[sortedFeatures.length - 1].getProperties()[this.propertyName];
//
if (exactMatch){ // if (exactMatch){
if (lowProp == propertyValue){ // if (lowProp == propertyValue){
return sortedFeatures[0]; // return sortedFeatures[0];
} else if (propertyValue < lowProp){ // } else if (propertyValue < lowProp){
return undefined; // return undefined;
} else if (highProp == propertyValue){ // } else if (highProp == propertyValue){
return sortedFeatures[sortedFeatures.length - 1]; // return sortedFeatures[sortedFeatures.length - 1];
} else if (propertyValue > highProp){ // } else if (propertyValue > highProp){
return undefined; // return undefined;
} // }
} else { // } else {
if (propertyValue <= lowProp){ // if (propertyValue <= lowProp){
return sortedFeatures[0]; // return sortedFeatures[0];
} else if (propertyValue >= highProp){ // } else if (propertyValue >= highProp){
return sortedFeatures[sortedFeatures.length - 1]; // return sortedFeatures[sortedFeatures.length - 1];
} // }
} // }
//
let midIndex = Math.floor(sortedFeatures.length / 2); // let midIndex = Math.floor(sortedFeatures.length / 2);
let midFeature = sortedFeatures[midIndex]; // let midFeature = sortedFeatures[midIndex];
let midProperty = midFeature.getProperties()[this.propertyName]; // let midProperty = midFeature.getProperties()[this.propertyName];
//
if (midProperty === propertyValue){ // if (midProperty === propertyValue){
return midFeature; // return midFeature;
} // }
//
if (propertyValue < midProperty){ // if (propertyValue < midProperty){
return this.getFeature(propertyValue, exactMatch, sortedFeatures.slice(0, midIndex)); // return this.getFeature(propertyValue, exactMatch, sortedFeatures.slice(0, midIndex));
} else { // } else {
return this.getFeature(propertyValue, exactMatch, sortedFeatures.slice(midIndex)); // return this.getFeature(propertyValue, exactMatch, sortedFeatures.slice(midIndex));
} // }
return null;
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment