Метод, реализованный здесь, довольно быстрый и грязный. Это делает пару предположений, которые могут привести к неверным результатам.
Первое, что нужно знать, это то, что пространство широты / долготы неравномерно масштабируется относительно измеренного расстояния на земле. Это означает, что вектор длиной один метр имеет разную длину в широтном / длинном пространстве в зависимости от того, указывает ли вектор примерно восток-запад или север-юг. Кроме того, величина разницы между тем, как оси широты и долготы отображаются на наземные единицы, изменяется в зависимости от того, где вы находитесь на земном шаре (на полюсах она намного больше, чем на экваторе.)
Алгоритм выше делает очень быстрый и грязный обходной путь для этого, который должен генерировать масштабное значение, основанное на расстоянии, вычисленном для гипотенузы единичного прямоугольного треугольника. Это пытается в основном усреднить масштабы двух широт / длинных осей для этой точки на земном шаре.
Есть несколько проблем с этим. Если многоугольник очень большой (несколько геоэлементов), то это среднее значение масштаба будет отключено, поскольку оно рассчитывается только для локального геоячейки вокруг вершины 0. Во-вторых, аппроксимация среднего масштаба действительно очень грубая и будет сильно ломаться, если у вас есть многоугольники, которые сильно различаются в одном измерении, но не в другом (длинный тощий многоугольник, ориентированный вдоль одной из осей). Это связано с тем, что масштаб будет рассчитываться как среднее от масштаба двух осей, но одна из осей должна иметь очень небольшое влияние из-за распределения вершин.
Я не смотрел калькулятор другой области, но, думаю, если вы видите расхождения, этот код является менее точной версией.