我想在我的应用中实现地理位置。
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(getPosition, errorGettingPosition);
}
function getPosition(position) {
var myLatitude = position.coords.latitude;
var myLongitude = position.coords.longitude;
var radiusEarth = 6371;
myLongitude = myLongitude * (Math.PI / 180);
myLatitude = myLatitude * (Math.PI / 180);
var x0 = myLongitude * radiusEarth * Math.cos(myLatitude);
var y0 = myLatitude * radiusEarth;
for (var i = 0; i < list.length; i++) {
var vendorLongitude = list[i].Longitude = list[i].Longitude * (Math.PI / 180);
var vendorLatitude = list[i].Latitude = list[i].Latitude * (Math.PI / 180);
var x1 = vendorLongitude * radiusEarth * Math.cos(vendorLatitude);
var y1 = vendorLatitude * radiusEarth;
var dx = x0 - x1;
var dy = y0 - y1;
var d = Math.sqrt((dx * dx) + (dy * dy));
if (d < 1) {
list[i].Distance = Math.round(d * 1000) + " m";
} else {
list[i].Distance = Math.round(d * 10) / 10 + " km";
}
}
//add vendors to scope
$scope.vendors = list;
}
function errorGettingPosition(err) {
if (err.code == 1) {
alert("User denied geolocation.");
}
else if (err.code == 2) {
alert("Position unavailable.");
}
else if (err.code == 3) {
alert("Timeout expired.");
}
else {
alert("ERROR:" + err.message);
}
}
我写过这些代码。在计算机上的浏览器中它可以完美地工作,但是如果我在我的智能手机上安装这个应用程序(Android,版本5.1.1)它不起作用,我不知道为什么。它也不会在智能手机上输入错误功能。
你知道该怎么办吗?
答案 0 :(得分:0)
这个人可以输入错误功能
function initiate_watchlocation() {
if (watchProcess == null) {
watchProcess = navigator.geolocation.watchPosition(onSuccess, onError);
}
}
var onSuccess = function(position) {
var myLatitude = position.coords.latitude;
var myLongitude = position.coords.longitude;
};
function onError(error) {
alert_box('code: ' + error.code + '\n' +
'message: ' + error.message + '\n');
}
考虑在document.ready中运行它。
答案 1 :(得分:0)
非常特别。当应用加载网站时,它以getCurrentPosition()函数开始。然后我可以一步一步,没有任何反应。但是几秒钟后(大约5秒),它将通过成功回调。我将结果保存在$ scope中,因为我使用AngularJS。但是在GUI中,我无法识别经度和纬度的位置。