Моя цель - рассчитать расстояние между двумя объектами цезия в километрах. В качестве бонуса я в конечном итоге хочу иметь возможность измерять расстояние в пикселях.CesiumJS - Расстояние между двумя точками
Я кучу метки в формате KML, как это:
<Placemark>
<name>Place</name>
<Point><coordinates>48.655,-31.175</coordinates></Point>
<styleUrl>#style</styleUrl>
<ExtendedData>
...
</ExtendedData>
</Placemark>
Я импортируя их в цезий, как так:
viewer.dataSources.add(Cesium.KmlDataSource.load('./data.kml', options)).then(function(dataSource) {
var entities = dataSource.entities._entities._array;
Я попытался создать новые объекты Cartesian3 сущностей I но значения x, y и z, которые я получаю от объекта сущности, составляют сотни тысяч. Широта и долгота из моего KML нигде не найдены в объектах сущности.
Если я создавать объекты Cartesian3 и вычислить расстояние примерно так:
var distance = Cesium.Cartesian3.distance(firstPoint, secondPoint);
возвращает число в миллионах. Я оценил расстояние между несколькими точками таким образом, и когда я сравниваю эти значения, возвращаемые с результатом онлайн-калькулятора, который возвращает фактическое значение в километрах, различия в расстояниях не являются линейными (некоторые расстояния, возвращаемые цезием, равны 900 раз фактическое расстояние, а некоторые - в 700 раз больше фактического расстояния).
Надеюсь, этого достаточно, чтобы получить помощь. Я не знаю, с чего начать это исправление. Любая помощь будет оценена по достоинству. Спасибо.