Cordova:HTML5地理位置-从JavaScript数组中查找最近的位置
我有JavaScript中的位置数组。我需要从gps传感器获取gps地理位置(在使用ApacheCordova的移动电话上) 如果GPS精度优于例如40米,我需要做一些事情(设置css显示:块,更改颜色,…) 我有以下代码:Cordova:HTML5地理位置-从JavaScript数组中查找最近的位置,javascript,html,cordova,geolocation,gps,Javascript,Html,Cordova,Geolocation,Gps,我有JavaScript中的位置数组。我需要从gps传感器获取gps地理位置(在使用ApacheCordova的移动电话上) 如果GPS精度优于例如40米,我需要做一些事情(设置css显示:块,更改颜色,…) 我有以下代码: <!DOCTYPE html> <html><head> <meta charset="utf-8"> <script type="text/javascript" charset="utf-8" sr
<!DOCTYPE html>
<html><head>
<meta charset="utf-8">
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script src="js/jquery-1.11.0.min.js"></script>
<script src="js/distance.js"></script> <!-- https://github.com/janantala/GPS-distance/blob/master/javascript/distance.js -->
<script type="text/javascript" charset="utf-8">
var interval = 5; // [s]
var timeout = 60; // [s]
/* --------------------------------------------------- */
var latitude = new Array();
var longtitude = new Array();
var nameOfLocation = new Array();
// address 1
// Latitude : 10.20 | Longitude : 30.40
latitude[0] = 10.20;
longtitude[0] = 30.40;
nameOfLocation[0] = "address 1";
// address 2
// Latitude : 40.30 | Longitude : 20.10
latitude[1] = 40.30;
longtitude[1] = 20.10;
nameOfLocation[1] = "address 2";
// ...
/* --------------------------------------------------- */
// Wait for device API libraries to load
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
function onDeviceReady() {
console.log('in onDeviceReady()');
$(document).ready(function(){
setInterval(function(i) {
navigator.geolocation.getCurrentPosition(onSuccess, onError, {
maximumAge: 0,
timeout: (timeout*1000),
enableHighAccuracy: true }
);
}, (interval*1000))
});
}
// onSuccess Geolocation
function onSuccess(position) {
console.log('in onSuccess()');
console.log(position.coords.latitude, "position.coords.latitude");
console.log(position.coords.longitude, "position.coords.longitude");
var element = document.getElementById('geolocation');
element.innerHTML = 'Latitude: ' + position.coords.latitude + '<br />' +
'Longitude: ' + position.coords.longitude + '<br />' +
'Altitude: ' + position.coords.altitude + '<br />' +
'Accuracy: ' + position.coords.accuracy + '<br />' +
'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '<br />' +
'Heading: ' + position.coords.heading + '<br />' +
'Speed: ' + position.coords.speed + '<br />' +
'Timestamp: ' + position.timestamp + '<br />';
var place;
var accuracy;
$("#accuracy").html("GPS accuracy " + position.coords.accuracy + " m.");
if (position.coords.accuracy < 40) {
$("#accuracy").css("background-color", "Gray");
for (var i=0; nameOfLocation.length; i++) {
var distance = getDistance(latitude[0], longitude[0], position.coords.latitude, position.coords.longitude);
if (distance <= 25) {
place = i;
accuracy = position.coords.accuracy;
$("#accuracy").css("background-color", "OrangeRed");
} else if (distance <= 20) {
place = i;
accuracy = position.coords.accuracy;
$("#accuracy").css("background-color", "Yellow");
} else if (distance <= 15) {
place = i;
accuracy = position.coords.accuracy;
$("#accuracy").css("background-color", "Green");
}
}
$("#info").html("You are about <strong>" + accuracy + "</strong> meters from location <strong>" + nameOfLocation[i] + "</strong>");
} else {
$("#info").html("");
}
}
// onError Callback receives a PositionError object
function onError(error) {
console.log('in onError()');
console.log(error.code, "error.code");
console.log(error.message, "error.message");
$("#geolocation").html(
'code: ' + error.code + '<br />' +
'message: ' + error.message);
$("#accuracy").css("background-color", "");
}
</script>
</head><body>
<p id="info"></p>
<hr />
<p id="accuracy"></p>
<hr />
<p id="geolocation">GPS ...</p>
</body></html>
变量间隔=5;//[s]
变量超时=60;//[s]
/* --------------------------------------------------- */
var latitude=新数组();
var longtudent=新数组();
var nameOfLocation=新数组();
//地址1
//纬度:10.20 |经度:30.40
纬度[0]=10.20;
长度[0]=30.40;
位置[0]的名称=“地址1”;
//地址2
//纬度:40.30 |经度:20.10
纬度[1]=40.30;
长度[1]=20.10;
地址名称[1]=“地址2”;
// ...
/* --------------------------------------------------- */
//等待加载设备API库
文件。添加的监听器(“deviceready”,OnDeviceraddy,false);
//设备API可用
函数ondevicerady(){
log('in ondevicerady()');
$(文档).ready(函数(){
设置间隔(函数(i){
navigator.geolocation.getCurrentPosition(onSuccess,onError{
最大值:0,
超时:(超时*1000),
EnableHighAccurance:true}
);
},(间隔*1000)
});
}
//成功地理定位
成功时的功能(位置){
log('in onSuccess()');
log(position.coords.latitude,“position.coords.latitude”);
log(position.coords.longitude,“position.coords.longitude”);
var element=document.getElementById('geolocation');
element.innerHTML='Latitude:'+position.coords.Latitude+'
'+
'经度:'+position.coords.Longitude+'
'+
'高度:'+position.coords.altime+'
'+
'精度:'+position.coords.accurity+'
'+
'高度精度:'+position.coords.altitudeAccuracy+'
'+
'标题:'+position.coords.Heading+'
'+
'速度:'+position.coords.Speed+'
'+
'时间戳:'+position.Timestamp+'
';
var place;
var准确性;
$(“#精度”).html(“GPS精度”+position.coords.accurity+“m.”);
if(位置坐标精度<40){
$(“#精度”).css(“背景色”、“灰色”);
for(变量i=0;nameOfLocation.length;i++){
var distance=getDistance(纬度[0],经度[0],位置.coords.latitude,位置.coords.经度);
如果(距离)