Я думаю, что это во многом зависит от точки зрения и прецедента сказать, когда функции равны, поэтому он остается пользователю определить равенство. Некоторые могут сказать, что функции равны, если они разделяют (точную) ту же геометрию (1). Другие могут сказать, что функции должны иметь те же свойства (2) или даже оба (3).
Для проверки свойств равенства Я бы рекомендовал определить атрибуты, имеющие значение для вашего определения равенства. Затем вы можете использовать код, подобный этому, чтобы проверить, если 2 ol.Feature
объекты равны:
// Define your important properties
var mySelectedProperties = ["importantProperty", "anotherImportantProperty", "propertyX"];
// Check for property equality between two ol.Feature objects
function areEqual(featureA, featureB){
var equal = true;
for(let property of mySelectedProperties){
if(featureA.get(property) != featureB.get(property)){
equal = false;
return equal ;
}
}
return equal;
}
Для геометрии равенства вы можете захотеть, чтобы проверить, если (х & у) координаты совпадают. Вот еще некоторые соображения:
- 2 геометрий может выглядеть одинаково, но координаты не в том же порядке:
Э.Г.: Linea: точка А-pointB и lineB: pointB-точка А
или даже это: polygonA: точка А-pointB-pointC-точка А и polygonB: pointB-pointC-точка А-pointB
- Для некоторых функций может иметь смысл сказать, что геометрия настолько близка к другой, что она, вероятно, представляет одну и ту же функцию ... (например, (небольшие) ошибки измерения или неточности с плавающей запятой).
Приятные мысли. Геометрические соображения очень помогли мне с функциями LineString! – Bel