1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | function toRadians(degree) { return this * Math.PI / 180; } function distance(latitude1, longitude1, latitude2, longitude2) { // R 是地球半径(KM) var R = 6371; var deltaLatitude = toRadians(latitude2-latitude1); var deltaLongitude = toRadians(longitude2-longitude1); latitude1 = toRadians(latitude1); latitude2 = toRadians(latitude2); var a = Math.sin(deltaLatitude/2) * Math.sin(deltaLatitude/2) + Math.cos(latitude1) * Math.cos(latitude2) * Math.sin(deltaLongitude/2) * Math.sin(deltaLongitude/2); var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); var d = R * c; return d; } |
1 2 3 4 5 | // 如果 accuracy 的值太大,我们认为它不准确,不用它计算距离 if (accuracy >= 500) { updateStatus("这个数据太不靠谱,需要更准确的数据来计算本次移动距离。"); return; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | // 计算移动距离 if ((lastLat != null) && (lastLong != null)) { var currentDistance = distance(latitude, longitude, lastLat, lastLong); document.getElementById("本次移动距离").innerHTML = "本次移动距离:" + currentDistance.toFixed(4) + " 千米"; totalDistance += currentDistance; document.getElementById("总计移动距离").innerHTML = "总计移动距离:" + currentDistance.toFixed(4) + " 千米"; } lastLat = latitude; lastLong = longitude; updateStatus("计算移动距离成功。"); } |
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |