从控制器中的导航器获取用户位置
Get user location from navigator in controller
我使用navigator.geolocation.getcurrentposition来获取当前用户的位置(纬度/长度)。下面是我的函数:
function userLocation(){
var response = [];
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(p){
// on success
response['latitude'] = p.coords.latitude;
response['longitude'] = p.coords.longitude;
console.log(response);
}, function(e){
// on error
console.log(e);
});
} else {
console.log("Geolocation is not supported by this browser.");
}
return response;
}
它总是返回空数组,我理解getCurrentPosition函数使异步调用,所以不可能返回响应。
我尝试使用谷歌地理代码api来获取位置,但这是基于用户的IP地址,而不是那么准确。
我想要一个函数来返回这些lat/long。是否有任何方法我可以从getCurrentPosition在我的控制器函数的响应?
将getLocation()
函数放在window onload中,一个弹出窗口将询问是否允许您的位置,如果您允许您的纬度和经度将被捕获。
请使用下面的代码。
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
console.log("Geolocation is not supported by this browser.");
}
}
function showPosition(position) {
console.log("Latitude: " + position.coords.latitude +
"<br>Longitude: " + position.coords.longitude);
$.ajax({
url: 'abc.php',
type: 'POST',
data: 'latitude='+position.coords.latitude+'&longitude='+position.coords.longitude,
success: function(data) {
console.log(data);
},
error: function(e) {
//called when there is an error
//console.log(e.message);
}
});
}
请参考此链接获取更多信息http://www.w3schools.com/html/tryit.asp?filename=tryhtml5_geolocation
如何处理结果:
function userLocation(cb) {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(p){
// on success
cb(null, p.coords);
}, function(e){
// on error
cb(e, null);
});
} else {
cb("Geolocation is not supported by this browser.", null);
}
}
现在像这样调用函数:
userLocation(function(err, coords) {
if (err) console.log(err);
else {
// do something with coords
}
});
可以使用getCurrentPosition
的第三个参数。请参考以下示例。
var response = [];
var options = {
enableHighAccuracy: true,
timeout: 5000,
maximumAge: 0
};
function success(pos) {
response['latitude'] = pos.coords.latitude;
response['longitude'] = pos.coords.longitude;
};
function error(err) {
//
};
navigator.geolocation.getCurrentPosition(success, error, options);
你也可以参考下面的链接。
https://www.tutorialspoint.com/html5/geolocation_getcurrentposition.htm相关文章:
- 从远程脚本获取用户IP
- JSON获取用户id's在嵌套数组中
- 获取用户选择的不带时区的日期
- 如何从客户端的数组中获取用户输入和返回值
- 如何使用Node.js脚本从Rally获取用户的修订历史
- Express.js:在用户发帖时获取用户的引荐来源网址
- 获取用户位置并将坐标保存在数据库中
- 获取用户按键的时间
- 从表单中获取用户输入执行计算(操作顺序)并输出回该表单
- 如何获取用户's输入并返回我定义的匹配变量的值
- 如何通过获取用户输入和使用按钮来运行JavaScript函数
- 使用jQuery获取用户坐标
- 获取用户和服务器时间之间的时间差
- 在 PHP 或 JavaScript 中获取用户的纬度和经度,以便在 PHP 中使用
- 如何通过声云 api 调用获取用户 ID
- 使用 Javascript 获取用户的 Github 存储库列表
- 如何使用 HTML 中的表单框获取用户输入
- 如何从HTML表单中获取用户输入并将其存储在现有的JavaScript数组中
- Phonegap通过WiFi和移动网络而非GPS获取用户位置
- 获取用户选择的选项的值