我正在为希望能够在地图上查看驱动程序进度的客户创建一些跟踪功能。我的APS.NET MVC4应用程序中有一个javascript页面,它有一个minue计时器,每分钟获取移动用户的当前位置,然后将该值存储在变量中,然后使用ajax调用MVC控制器函数来保存该位置数据到数据库中。然后可以在bing地图上查看位置数据。
我是否以正确的方式实现了这一点,还是应该使用HTML5 WatchPosition函数而不是GetCurrentPosition函数?我没有看到在WatchPosition函数中设置间隔的方法,它似乎在每次位置改变时触发,这似乎会连续触发,我只需要每分钟左右的位置数据。感谢您对我的代码的建议。
var Latitude = 0;
var Longitude = 0;
var TrackingLoop = setInterval(function () { GetCurrentLocation() }, 60000);
function RestartTracking() { location.reload(); }
function GetCurrentLocation() {
if (navigator.geolocation) {
var timeoutVal = 10 * 1000 * 1000;
navigator.geolocation.getCurrentPosition(
displayPosition,
displayError,
{ enableHighAccuracy: true, timeout: timeoutVal, maximumAge: 0 }
);
}
else {
alert("Geolocation is not supported by this browser");
}
}
function displayPosition(position) {
Latitude = position.coords.latitude;
Longitude = position.coords.longitude;
UpdateLocation(Latitude, Longitude);
}
function UpdateLocation(Latitude, Longitude) {
var JobID = document.getElementById("JobID").value;
$.ajax({
url: '/Job/UpdateLocation',
type: 'POST',
data: {
JobID: JobID,
Latitude: Latitude,
Longitude: Longitude
},
});
}