在坐标数组上循环并计算距离javascript
loop over array of coordinates and calculate distance javascript
我有一个正在运行的应用程序,它可以跟踪和记录跑步者的位置,并将坐标保存到数组中,到目前为止还不错。我试着在数组上循环,计算出总共行进的距离。
代码:
var startPos;
var num;
var distance;
navigator.geolocation.getCurrentPosition(function (position) {
startPos = position;
});
//
watchID = navigator.geolocation.watchPosition(function (position) {
pathArr.push(new google.maps.LatLng(position.coords.latitude, position.coords.longitude));
var lat = position.coords.latitude;
var lon = position.coords.longitude;
var latlng = new google.maps.LatLng(lat, lon);
var num = calculateDistance(startPos.coords.latitude,startPos.coords.longitude,
position.coords.latitude, position.coords.longitude);
distance = num;
},
function (positionError) {
$("#error").append("Error: " + positionError.message + "<br />");
}, {
enableHighAccuracy: true,
timeout: 30 * 1000
});
function calculateDistance(lat1, lon1, lat2, lon2) {
var R = 6371; // km
var dLat = (lat2 - lat1).toRad();
var dLon = (lon2 - lon1).toRad();
var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) * Math.sin(dLon / 2) * Math.sin(dLon / 2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
var d = R * c;
return d;
}
我意识到,只有当我走一条直线时,计算才能正常工作,因为它总是从起点一直到终点,而不是一个接一个地。如果跑步者绕回零点,总数将为0或接近0,我需要改变它,以计算从坐标到坐标的距离,并将总数相加。
我试过这个:
var lat = position.coords.latitude;
var lon = position.coords.longitude;
var latlng = new google.maps.LatLng(lat, lon);
num += calculateDistance(startPos.coords.latitude, startPos.coords.longitude,
position.coords.latitude, position.coords.longitude);
startPos = latlng;
distance = num;
没有运气。请帮助
您需要迭代数组中的所有地理坐标,找到每个连续两个坐标之间的距离,并将它们相加到距离的总和中,以找到总距离。
简化代码的相关部分如下:
假定coords
持有地理坐标阵列,
for (var i = 0; i < coords.length - 1; i++) {
distanceTotal += google.maps.geometry.spherical.computeDistanceBetween(coords[i], coords[i+1]);
}
下面是Google Maps API的一个示例:http://jsfiddle.net/90kbnjqx/2/
相关文章:
- 计算php或js中的距离
- 使用谷歌地图api计算距离并将其设置在表格中<td>
- 地理位置和计算从当前纬度/液化天然气到另一纬度/液化石油气的距离
- 计算数据点阵列与平均值的最大距离,并返回相关数据点
- 计算地理位置距离返回 NaN
- Javascript画布:如何有效地计算两个画布的距离
- 如何使用谷歌地图计算距离
- 使用javascript计算两个邮政编码之间的距离
- 用PHP计算多个点的距离
- 如何使用谷歌地图自动计算和显示机场的最近距离?使用jquery或javascript
- 检测当前位置并使用网站的预定义位置计算距离
- 谷歌地图地理编码器,计算距离,
- 在提交表单之前计算距离
- 如何在谷歌地图上绘制线和计算距离的距离列表经纬度从
- 计算距离时出现未捕获类型错误
- 根据提示存储坐标并计算距离
- 计算距离和显示路线的谷歌地图与路点
- 在坐标数组上循环并计算距离javascript
- 如何使用谷歌地图在angular中创建自定义指令来计算距离
- 计算距离一定米的两个坐标之间的经纬度