Javascript 谷歌地图-如何以米为单位计算两点之间的距离?
我有以下几点:Javascript 谷歌地图-如何以米为单位计算两点之间的距离?,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我有以下几点: (45.463688, 9.18814) (46.0438317, 9.75936230000002) 我需要(我想是TroughtGoogleAPIv3)得到这两个点之间的距离,单位是米。我怎么做 与编码无关,顺便说一句 编辑 如果你正在寻找一些代码 我认为您可以不使用任何特定的API,使用普通Javascript计算距离: 该网站有很好的地理计算信息和距离计算的Javascript示例 好的,快速浏览一下Google API页面,您可以通过以下方式完成: 调用Direc
(45.463688, 9.18814)
(46.0438317, 9.75936230000002)
我需要(我想是TroughtGoogleAPIv3)得到这两个点之间的距离,单位是米。我怎么做
与编码无关,顺便说一句
编辑
如果你正在寻找一些代码
我认为您可以不使用任何特定的API,使用普通Javascript计算距离: 该网站有很好的地理计算信息和距离计算的Javascript示例 好的,快速浏览一下Google API页面,您可以通过以下方式完成:
这主要是通过GoogleAPI之外的数学实现的,因此除了找到正确的坐标之外,不需要使用api进行任何操作 知道了这一点,这里有一个链接指向先前回答的与Javascript相关的问题
如果您希望使用v3谷歌地图API,请使用以下函数: 注意:必须将
&libraries=geometry
添加到脚本源中
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&libraries=geometry"></script>
<script>
var p1 = new google.maps.LatLng(45.463688, 9.18814);
var p2 = new google.maps.LatLng(46.0438317, 9.75936230000002);
alert(calcDistance(p1, p2));
//calculates distance between two points in km's
function calcDistance(p1, p2) {
return (google.maps.geometry.spherical.computeDistanceBetween(p1, p2) / 1000).toFixed(2);
}
</script>
var p1=新的google.maps.LatLng(45.463688,9.18814);
var p2=新的google.maps.LatLng(46.0438317,9.75936230000002);
警报(钙距离(p1、p2));
//以公里为单位计算两点之间的距离
功能钙距离(p1、p2){
返回(google.maps.geometry.spheremic.computedDistancebetween(p1,p2)/1000.toFixed(2);
}
试试这个
CLLocationCoordinate2D coord1;
coord1.latitude = 45.463688;
coord1.longitude = 9.18814;
CLLocation *loc1 = [[[CLLocation alloc] initWithLatitude:coord1.latitude longitude:coord1.longitude] autorelease];
CLLocationCoordinate2D coord2;
coord2.latitude = 46.0438317;
coord2.longitude = 9.75936230000002;
CLLocation *loc2 = [[[CLLocation alloc] initWithLatitude:46.0438317 longitude:9.75936230000002] autorelease];
CLLocationDistance d1 = [loc1 distanceFromLocation:loc2];
试试这个:
const const toRadians = (val) => {
return val * Math.PI / 180;
}
const toDegrees = (val) => {
return val * 180 / Math.PI;
}
// Calculate a point winthin a circle
// circle ={center:LatLong, radius: number} // in metres
const pointInsideCircle = (point, circle) => {
let center = circle.center;
let distance = distanceBetween(point, center);
//alert(distance);
return distance < circle.radius;
};
const distanceBetween = (point1, point2) => {
//debugger;
var R = 6371e3; // metres
var φ1 = toRadians(point1.latitude);
var φ2 = toRadians(point2.latitude);
var Δφ = toRadians(point2.latitude - point1.latitude);
var Δλ = toRadians(point2.longitude - point1.longitude);
var a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) +
Math.cos(φ1) * Math.cos(φ2) *
Math.sin(Δλ / 2) * Math.sin(Δλ / 2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
return R * c;
}
const toRadians=(val)=>{
返回值*Math.PI/180;
}
常数toDegrees=(val)=>{
返回val*180/Math.PI;
}
//计算圆上的点
//圆={中心:LatLong,半径:number}//以米为单位
const pointInsideCircle=(点,圆)=>{
设中心=圆。中心;
让距离=之间的距离(点、中心);
//警戒(距离);
返回距离<圆半径;
};
常量距离=(点1,点2)=>{
//调试器;
var R=6371e3;//米
varφ1=环面(点1.纬度);
varφ2=环面(点2.纬度);
varΔφ=环面(点2.纬度-点1.纬度);
varΔλ=环面(点2.经度-点1.经度);
var a=数学sin(Δφ/2)*数学sin(Δφ/2)+
数学cos(φ1)*数学cos(φ2)*
数学sin(Δλ/2)*数学sin(Δλ/2);
var c=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));
返回R*c;
}
参考资料:您是指整个路径长度中的距离,还是只想知道位移(直线距离)?我看没有人指出距离和位移之间的区别。对于距离,计算JSON/XML数据给出的每个路由点,对于位移,有一个内置的解决方案,使用
球形类。您是指整个路径长度中的距离,还是只想知道位移(直线距离)?我看没有人指出距离和位移之间的区别。对于距离,计算JSON/XML数据给出的每个路由点,对于位移,有一个内置的解决方案,使用spherec
class。这个想法是,如果你指的是距离,那么你只需在每个路径点上使用computedIstanceBeween
,并将其连接起来
//calculates distance between two points in km's
function calcDistance(p1, p2) {
return (google.maps.geometry.spherical.computeDistanceBetween(p1, p2) / 1000).toFixed(2);
}
我添加了使用示例,您需要通过2个坐标。它对我有效,返回78.35请不要忘记将问题标记为已回答,以帮助将来的人们找到正确答案。这是否返回以英里或公里为单位的值?正如注释所述://在km的console.log中计算两点之间的距离(calcDistance(“45.463688,9.18814”,“46.0438317,9.75936230000002”)
它返回NaN,因为我们向calDistance
提供字符串。尝试将其设置为console.log(calcDistance(45.463688,9.18814,46.0438317,9.7593623000002))代码>谢谢你的第一个链接。近距离的计算可以通过使用近似公式来进行优化,以获得两点之间的路线距离,这只是给出了直接距离(在物理文献中:位移),如何获得路线距离这是目标C:)问题是关于谷歌地图的Javascript API请提供解释,而不是“尝试这个”。如果您使用距离矩阵api计算距离和旅行时间,则可以使用距离矩阵api。完整答案请参阅。为什么它更好,它是如何工作的,等等。“试试这个”是不够的。Stackoverflow不是盲目尝试,而是阅读和理解事物是如何工作的。仍然感谢您的贡献:)