如果想要实时的话,那可以写加载结束事件,用js获取当前经纬度,然后在右上角的参数,用sql函数取出这个地点的经纬度,然后两者计算距离,最后将结果返回到页面,是否可以打卡,这个是我做过的案例,当然其中存在的问题是获取的经纬度偏差过大,定位不准,完整的js如下,stat是我自己维护的状态, lat1为数据库存储的维度,lng1为数据库存储的经度
if(stat == "0"){
FR.location(function(status, message){ //获取地理位置,定位经纬度
if(status=="success") {
//定位成功,message返回经纬度值
//FR.Msg.alert("当前位置是" + message);
contentPane.setCellValue(6, 2, message);
contentPane.setCellValue(2,5,"初次签到可打卡");
} else {
//定位失败,message返回对应的错误信息
//FR.Msg.alert("定位失败"); //定位失败
contentPane.setCellValue(6, 2, "定位失败");
contentPane.setCellValue(2,5,"定位失败不可打卡");
}
});
}
else{
var jingdu = "";
var weidu = "";
FR.location(function(status, message) {
if(status == "success") {
//定位成功,message返回经纬度值
// FR.Msg.alert("当前位置是" + message);
var aa = message.split(',');
weidu = aa[0];
jingdu = aa[1];
var conv = "http://api.map.baidu.com/geoconv/v1/?ak=R4K04VR8ecTY9LUab6RkmmOz&coords=" + jingdu + "," + weidu + "&from=1&to=5&output=json";
var lat2 = aa[0];
var lng2 = aa[1];
var radLat1 = lat1 * Math.PI / 180.0;
var radLat2 = lat2 * Math.PI / 180.0;
var a = radLat1 - radLat2;
var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
s = s * 6378.137;
s = Math.round(s * 10000) / 10;
// contentPane.setCellValue(2,4,s);
if(s == null|| s.length == 0){
contentPane.setCellValue(2,4,s);
contentPane.setCellValue(2,5,"定位失败不可打卡");
} else if(s >2000){
contentPane.setCellValue(2,4,s);
contentPane.setCellValue(2,5,"不在打卡范围内");
} else {
contentPane.setCellValue(2,4,s);
contentPane.setCellValue(2,5,"可以打卡");
}
}else {
//定位失败,message返回对应的错误信息
//FR.Msg.alert(message); //定位失败
if(s == null|| s.length == 0){
contentPane.setCellValue(2,4,s);
contentPane.setCellValue(2,5,"定位失败不可打卡");
}
}
});
}