我正在构建任何 angularjs 应用程序。我正在尝试获取应用程序/网站访问者的地理位置。
当用户访问我的网站时,浏览器会发出获取用户位置的请求。请求显示正常,接受后,我的 ubuntu 浏览器(包括 Firefox 和 Chrome)中没有返回任何内容。
但是当我在 Windows 或 Android 手机上检查该应用程序时,会返回用户位置。
这是 ubuntu 浏览器的问题吗?
这是地理定位测试的代码https://plnkr.co/edit/ezXP93oD9uEsn5r1pfO1?p=preview
appProduct.service('geolocation', function ($q, $http) {
var getLocation = function() {
var defer = $q.defer();
// If supported and have permission for location...
if (navigator.geolocation) {
//
navigator.geolocation.getCurrentPosition(function(position){
var result = {latitude : position.coords.latitude , longitude : position.coords.longitude}
// Adding randomization since we are all in the same location...
result.latitude += (Math.random() >0.5? -Math.random()/100 : Math.random()/100 );
result.longitude += (Math.random() >0.5? -Math.random()/100 : Math.random()/100 );
getNearbyCity(result.latitude, result.longitude).then(function(data){
result.address = data.data.results[1].formatted_address;
defer.resolve(result);
});
}, function(error){
defer.reject({message: error.message, code:error.code});
});
}
else {
defer.reject({error: 'Geolocation not supported'});
}
return defer.promise;
}
var getNearbyCity = function (latitude, longitude){
var defer = $q.defer();
var url = 'https://maps.googleapis.com/maps/api/geocode/json?latlng=' + latitude +',' + longitude +'&sensor=true';
$http({method: 'GET', url: url}).
success(function(data, status, headers, config) {
defer.resolve({data : data});
}).
error(function(data, status, headers, config) {
defer.reject({error: 'City not found'});
});
return defer.promise;
}
var service = {
getLocation : getLocation,
getNearbyCity: getNearbyCity
};
return service;
});
答案1
我认为这个问题来自 ubuntu 软件中心的 chromium 或 firefox。
我删除了 Chromium,然后直接从 Chrome 网站下载了 Chrome。它会询问兼容性。之后我点击下载的文件,它会带你到 ubuntu 软件中心,它会告诉你,你正在从“第三方”安装。
安装后,我的地理定位工作正常。我猜如果你下载最新版本并手动安装,Firefox 也会发生同样的事情。以下是有关如何手动安装 Firefox 的链接... https://www.liberiangeek.net/2012/04/download-and-install-firefox-manually-in-ubuntu-12-04-precise-pangolin/