Javascript 使用Google maps API的多个板条之间的距离
如果我在数据库中存储了几个latlng点,并且我想将这些点与我的实际latlng位置进行比较(给出每个latlng点与我的实际latlng之间的距离),那么google maps API将如何实现这一点?或者使用我的数据库会更容易 计算球体上两点之间的距离需要使用,这需要对三角学有相当扎实的理解 更简单的方法是利用,它在Javascript 使用Google maps API的多个板条之间的距离,javascript,python,django,postgresql,google-maps-api-3,Javascript,Python,Django,Postgresql,Google Maps Api 3,如果我在数据库中存储了几个latlng点,并且我想将这些点与我的实际latlng位置进行比较(给出每个latlng点与我的实际latlng之间的距离),那么google maps API将如何实现这一点?或者使用我的数据库会更容易 计算球体上两点之间的距离需要使用,这需要对三角学有相当扎实的理解 更简单的方法是利用,它在google.maps.geometry.spheremic命名空间中具有方便的函数computeDistanceBetween 下面是一些使用computeDistanceBe
google.maps.geometry.spheremic
命名空间中具有方便的函数computeDistanceBetween
下面是一些使用computeDistanceBetween
的示例代码:
var home = ['London', new google.maps.LatLng(51.5, -0.1167)];
var pts = [
['Prague', new google.maps.LatLng(50.08, 14.43)],
['Paris', new google.maps.LatLng(48.856614, 2.3522219000000177)],
['Berlin', new google.maps.LatLng(52.5200065999, 13.404953999999975)]
];
// provide a shortcut for the distance function
var dist = google.maps.geometry.spherical.computeDistanceBetween;
pts.forEach(function(pt){
var d = dist(home[1], pt[1])/1000;
// d is now the distance (in km) between the home coordinate and the point
});
请参见此处的工作示例:如果您打算使用数据库进行此类工作,您可能需要考虑使用PostGIS进行此工作。安装PostGIS后:
CREATE EXTENSION postgis;
SELECT ST_Distance(
ST_GeographyFromText('POINT(115.764286 -31.746416)'),
ST_GeographyFromText('POINT(151.036606 -33.906896)')
);
产生:
st_distance
------------------
3295294.42439749
(1 row)
与谷歌地图输出相比
从距离上看,这似乎是正确的
请注意,这是球体距离,即在地球表面上,而不是通过它的点对点距离
注意PostGIS和谷歌地图的坐标顺序
要了解有关PostGIS的更多信息,请执行以下操作: