[英]Javascript passing arguments between functions
這段代碼工作正常,但我希望函數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)
}
您將閉包傳遞給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));
}
我會將它們作為具有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;
}
你能做到這一點嗎?
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));
}
從上面的示例中,未從此行代碼navigator.geolocation.getCurrentPosition(ajmo);
傳遞position
變量navigator.geolocation.getCurrentPosition(ajmo);
那就是我如何添加參數
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.