GPS 坐标未存储在我的变量中
GPS coordinates are not stored in my variables
在 for 循环中对所有位置执行 calcCrow 时,以下代码似乎没有使用位置数据。当我使用 Chrome 调试器检查它并逐步执行时,代码在代码执行完成之前从未真正获取坐标。
var locationsOfInterest = [];
var currentlat= 0;
var currentlong= 0;
x = navigator.geolocation;
x.getCurrentPosition(getposition);
function getposition(position){
currentlat = position.coords.latitude;
currentlong = position.coords.longitude;
};
var sunwayuni = {
title: "Sunway University",
latitude: 3.0681,
longitude: 101.6041,
}
var monashaustralia = {
title: "Monash Australia",
latitude: -37.876823,
longitude: 145.045837,
}
var kualalumpur = {
title: "Kuala Lumpur",
latitude: 3.1390,
longitude: 101.6869,
}
locationsOfInterest= [sunwayuni, monashaustralia, kualalumpur]
for (var i = 0; i < locationsOfInterest.length; i++){
locationsOfInterest[i].distance = calcCrow(locationsOfInterest[i].latitude, locationsOfInterest[i].longitude);
}
function calcCrow(lat2, lon2)
{
var R = 6371; // km
var drLat = toRad(lat2-currentlat);
var drLon = toRad(lon2-currentlong);
var rlat1 = toRad(currentlat);
var rlat2 = toRad(lat2);
var a = Math.sin(drLat/2) * Math.sin(drLat/2) +
Math.sin(drLon/2) * Math.sin(drLon/2) * Math.cos(rlat1) * Math.cos(rlat2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;
return d;
}
// Converts numeric degrees to radians
function toRad(Value)
{
return Value * Math.PI / 180;
}
Html5 getcurrentposition 函数异步工作,因此所有处理都在 getcurrentposition 函数中进行。
var locationsOfInterest = [];变种currentlat = 0;变种currentlong = 0; x = navigator.geolocation; x.getCurrentPosition(获取位置);函数 getposition(position){ currentlat = position.coords.latitude; currentlong = position.coords.longitude;
var sunwayuni = { 标题:"Sunway University",纬度:3.0681,经度:101.6041,} var monashaustralia = { 标题:"Monash Australia",纬度:-37.876823,经度:145.045837,} var kualalumpur = { 标题:"Kuala Lumpur",纬度:3.1390,经度:101.6869,} locationsOfInterest= [sunwayuni, monashaustralia, kualalumpur] for (var i = 0; i < locationsOfInterest.length; i++){ locationsOfInterest[i] .distance = calcCrow(locationsOfInterest[i].latitude, locationsOfInterest[i].longitude); } 函数 calcCrow(lat2, lon2) { var R = 6371; // km var drLat = toRad(lat2-currentlat); var drLon = toRad(lon2-currentrong); var rlat1 = toRad(currentlat); var rlat2 = toRad(lat2); var a = Math.sin(drLat/2) * Math.sin(drLat/2) + Math.sin(drLon/2) * Math.sin(drLon/2) * Math.cos(rlat1) * Math.cos(rlat2); var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); var d = R * c; returnd; } // 将数值度数转换为弧度 function toRad(Value) { return Value * Math.PI / 180; }
};
在 for 循环中对所有位置执行 calcCrow 时,以下代码似乎没有使用位置数据。当我使用 Chrome 调试器检查它并逐步执行时,代码在代码执行完成之前从未真正获取坐标。
var locationsOfInterest = [];
var currentlat= 0;
var currentlong= 0;
x = navigator.geolocation;
x.getCurrentPosition(getposition);
function getposition(position){
currentlat = position.coords.latitude;
currentlong = position.coords.longitude;
};
var sunwayuni = {
title: "Sunway University",
latitude: 3.0681,
longitude: 101.6041,
}
var monashaustralia = {
title: "Monash Australia",
latitude: -37.876823,
longitude: 145.045837,
}
var kualalumpur = {
title: "Kuala Lumpur",
latitude: 3.1390,
longitude: 101.6869,
}
locationsOfInterest= [sunwayuni, monashaustralia, kualalumpur]
for (var i = 0; i < locationsOfInterest.length; i++){
locationsOfInterest[i].distance = calcCrow(locationsOfInterest[i].latitude, locationsOfInterest[i].longitude);
}
function calcCrow(lat2, lon2)
{
var R = 6371; // km
var drLat = toRad(lat2-currentlat);
var drLon = toRad(lon2-currentlong);
var rlat1 = toRad(currentlat);
var rlat2 = toRad(lat2);
var a = Math.sin(drLat/2) * Math.sin(drLat/2) +
Math.sin(drLon/2) * Math.sin(drLon/2) * Math.cos(rlat1) * Math.cos(rlat2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;
return d;
}
// Converts numeric degrees to radians
function toRad(Value)
{
return Value * Math.PI / 180;
}
Html5 getcurrentposition 函数异步工作,因此所有处理都在 getcurrentposition 函数中进行。
var locationsOfInterest = [];变种currentlat = 0;变种currentlong = 0; x = navigator.geolocation; x.getCurrentPosition(获取位置);函数 getposition(position){ currentlat = position.coords.latitude; currentlong = position.coords.longitude;
var sunwayuni = { 标题:"Sunway University",纬度:3.0681,经度:101.6041,} var monashaustralia = { 标题:"Monash Australia",纬度:-37.876823,经度:145.045837,} var kualalumpur = { 标题:"Kuala Lumpur",纬度:3.1390,经度:101.6869,} locationsOfInterest= [sunwayuni, monashaustralia, kualalumpur] for (var i = 0; i < locationsOfInterest.length; i++){ locationsOfInterest[i] .distance = calcCrow(locationsOfInterest[i].latitude, locationsOfInterest[i].longitude); } 函数 calcCrow(lat2, lon2) { var R = 6371; // km var drLat = toRad(lat2-currentlat); var drLon = toRad(lon2-currentrong); var rlat1 = toRad(currentlat); var rlat2 = toRad(lat2); var a = Math.sin(drLat/2) * Math.sin(drLat/2) + Math.sin(drLon/2) * Math.sin(drLon/2) * Math.cos(rlat1) * Math.cos(rlat2); var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); var d = R * c; returnd; } // 将数值度数转换为弧度 function toRad(Value) { return Value * Math.PI / 180; } };