【发布时间】:2020-03-11 15:14:10
【问题描述】:
我对为什么这两个库提供不同的结果感到困惑。
const CATA = {
lat: 57.312004,
lng: 25.289825
};
const PK = {
lat: 57.307953,
lng: 25.295025
};
const tCATA = turf.point([CATA.lat, CATA.lng]);
const tPK = turf.point([PK.lat, PK.lng]);
const tDistance = turf.distance(tCATA, tPK, { units: "meters" });
const gCATA = new google.maps.LatLng(CATA);
const gPK = new google.maps.LatLng(PK);
const gDistance = google.maps.geometry.spherical.computeDistanceBetween(
gCATA,
gPK
);
console.log(tDistance, gDistance); // 707.249063108749, 548.7294775022126
代码沙盒:https://codesandbox.io/s/boring-hawking-b7uwh
好的,一件事可能是 turfjs 使用的地球半径 (6371008.8) 与 Google (6378137) 不同。但即使为computeDistanceBetween 提供草皮半径,结果仍然相差约 150 米。
但是,假设 computeDistanceBetween 尊重半径参数,我假设 Google 也依赖 Haversine,就像 turf 一样...
【问题讨论】:
标签: google-maps google-maps-api-3 haversine turfjs