我正在使用iPhone 4s模拟器运行以下代码:
Ti.Geolocation.getCurrentPosition(function(e){
Ti.API.log(JSON.stringify(e));
});
上述输出的格式化版本提供以下信息:
{
"code": 0,
"type":"location",
"error":"The operation couldn’t be completed. (kCLErrorDomain error 0.)",
"source":{},
"success":true
}
似乎有相当矛盾的信息。它说success
是true
但是会给出错误消息。
此外,根据Location Results Docs,它表示如果成功,则应返回coords
字段。但上面没有coords
。
请同时注意以下两项返回true
,因此不是权限问题:
Ti.Geolocation.locationServicesEnabled; Ti.Geolocation.hasLocationPermissions(Ti.Geolocation.AUTHORIZATION_ALWAYS);
答案 0 :(得分:1)
有两件事需要注意:
首先,您需要检查第一个属性以确保设备位置已开启。
然后你会检查 hasLocationPermissions ,因为即使设备位置没有打开也是如此,我认为这是你的情况。
此示例代码:
var authType = Ti.Geolocation. AUTHORIZATION_ALWAYS;
if (Ti.Geolocation.locationServicesEnabled) {
if (Ti.Geolocation.hasLocationPermissions(authType)) {
// voila...
} else {
Ti.Geolocation.requestLocationPermissions(authType, function (e) {
if (e.success) {
alert('voila...');
}
});
}
} else {
alert('Please turn on your device's location');
}