这段代码工作正常,但我希望函数getLocation有2个参数传递给函数ajmo中的函数getDistanceFromLatLonInKm。我想这样做,因为在这个例子中getDistanceFromLatLonInKm有2个硬编码参数,我想要变量。
有什么想法吗?
提前致谢。
getLocation();
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(ajmo);
}
}
function ajmo(position) {
lat = position.coords.latitude;
lng = position.coords.longitude;
alert('kurac:' + getDistanceFromLatLonInKm(45.332497, 14.436384, lat, lng));
}
function getDistanceFromLatLonInKm(lat_origin, lon_origin, lat_pos, lon_pos) {
var R = 6371;
var dLat = deg2rad(lat_pos - lat_origin);
var dLon = deg2rad(lon_pos - lon_origin);
var a =
Math.sin(dLat / 2) * Math.sin(dLat / 2) +
Math.cos(deg2rad(lat_origin)) * Math.cos(deg2rad(lat_pos)) *
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;
}
function deg2rad(deg) {
return deg * (Math.PI/180)
}
答案 0 :(得分:1)
您将关闭传递给getCurrentPosition
:
function getLocation(lat, lon) {
document.write(lo);
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(p) {
ajmo(p, lat, lon);
});
}
}
匿名函数将捕获lat
和lon
的值,并将它们传递给ajmo。
ajmo
将如下所示:
function ajmo(position, originalLat, originalLon) {
lat = position.coords.latitude;
lng = position.coords.longitude;
alert('kurac:' + getDistanceFromLatLonInKm(originalLat, originalLon, lat, lng));
}
答案 1 :(得分:0)
我会将它们作为lat / lng键的对象:
// pass the object in to getLocation
getLocation({lat: 45.332497, lng: 14.436384});
function getLocation(origin) {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function (position) {
// pass both the position and the origin to ajmo
ajmo(origin, position);
});
}
}
function ajmo(origin, position) {
// declare your lat/lng vars properly
var lat = position.coords.latitude;
var lng = position.coords.longitude;
// pass in origin as the first parameter
alert('kurac:' + getDistanceFromLatLonInKm(origin, lat, lng));
}
function getDistanceFromLatLonInKm(origin, lat_pos, lon_pos) {
var R = 6371;
// Then just use dot notation to access the origin object
var dLat = deg2rad(lat_pos - origin.lat);
var dLon = deg2rad(lon_pos - origin.lon);
var a =
Math.sin(dLat / 2) * Math.sin(dLat / 2) +
Math.cos(deg2rad(origin.lat)) * Math.cos(deg2rad(lat_pos)) *
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;
}
答案 2 :(得分:-1)
你能做到这一点。
function getLocation(param1, param2) {
document.write(lo);
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(ajmo(null, param1, param2));
}
}
function ajmo(position, param1, param2) {
lat = position.coords.latitude;
lng = position.coords.longitude;
alert('kurac:' + getDistanceFromLatLonInKm(param1, param2, lat, lng));
}
从上面的示例中,position
变量未从此代码行传递navigator.geolocation.getCurrentPosition(ajmo);
这就是我如何添加参数