Javascript 获得激活地理定位结果的承诺
使用此代码:Javascript 获得激活地理定位结果的承诺,javascript,ionic-framework,ionic2,geolocation,ionic3,Javascript,Ionic Framework,Ionic2,Geolocation,Ionic3,使用此代码: if (ionic.Platform.isIOS()) { cordova.plugins.diagnostic.switchToSettings(); } else { cordova.plugins.diagnostic.switchToLocationSettings(); } 我可以打开本机设备配置来标记地理位置。但我不知道当用户打开地理定位时该怎么做,它只是执行代码,但没有从中得到答案。我想(如果可能的话)知道用户是否打开了地理定位 我怎么做 我使用的是ioni
if (ionic.Platform.isIOS()) {
cordova.plugins.diagnostic.switchToSettings();
} else {
cordova.plugins.diagnostic.switchToLocationSettings();
}
我可以打开本机设备配置来标记地理位置。但我不知道当用户打开地理定位时该怎么做,它只是执行代码,但没有从中得到答案。我想(如果可能的话)知道用户是否打开了地理定位
我怎么做
我使用的是
ionic1
,尽管我认为此解决方案的操作适用于任何版本。非常感谢。不幸的是,当用户从设备设置打开/关闭位置时,您无法获得回调或响应,因为没有这种方式与本机设置通信
但有一个解决办法。使用
以下是完整的工作代码:
$scope.$on("$ionicView.enter", function() {
cordova.plugins.diagnostic.isLocationEnabled(function(enabled) {
console.log("Location setting is " + (enabled ? "enabled" : "disabled"));
if (!enabled) {
var templateMsg = "Location is not enabled!\nDo you want to enable location service?"
var confirmPopup = $ionicPopup.confirm({
title: '<b>Location Service</b>',
template: '<input alert-enter-key style="position: absolute; left: -9999px;">' + templateMsg.replace(/\n/g, '<br>'),
okText: "Enable",
okType: 'ok-button',
cancelText: "Not now",
cancelType: 'cancel-button'
});
confirmPopup.then(function(res) {
if (res) {
if (ionic.Platform.isIOS()) {
if (window.cordova && window.cordova.plugins.settings) {
window.cordova.plugins.settings.open("settings", function() {
console.log('settings opened');
},
function() {
console.log('failed to open settings');
}
);
} else {
console.log('openNativeSettingsTest is not active!');
}
} else {
cordova.plugins.diagnostic.switchToLocationSettings();
} }
});
}
}, function(error) {
console.error("The following error occurred: " + error);
});
});
$scope.$on(“$ionicView.enter”,函数(){
cordova.plugins.diagnostic.isLocationEnabled(功能已启用){
console.log(“位置设置为”+(启用?:“禁用”);
如果(!已启用){
var templateMsg=“位置未启用!\n是否要启用位置服务?”
var confirmPopup=$ionicPopup.confirm({
标题:“定位服务”,
模板:“”+templateMsg.replace(/\n/g,
),
okText:“启用”,
okType:“确定按钮”,
取消文本:“不是现在”,
cancelType:“取消按钮”
});
confirmPopup.then(函数(res){
如果(res){
if(ionic.Platform.isIOS()){
if(window.cordova&&window.cordova.plugins.settings){
window.cordova.plugins.settings.open(“settings”,function()){
console.log(“设置已打开”);
},
函数(){
console.log('打开设置失败');
}
);
}否则{
log('openNativeSettingsTest未激活!');
}
}否则{
插件。诊断。开关位置设置();
} }
});
}
},函数(错误){
console.error(“发生以下错误:“+错误”);
});
});
注意:要在iOS上打开位置设置(设置>隐私>位置服务),但iOS 11平台中有更改,因此您无法打开设置>隐私>位置服务非常感谢,这在安卓系统中运行良好,但在ios系统中,我不需要直接打开地理定位,可以为此做些什么?。顺便问一下,我用的是$scope而不是$scope。$on(“$ionicView.enter”=>addEventListener(“resume”)是一样的吗?@yavg我已经在iOS中更新了打开位置设置的答案。看看!我正在尝试虚拟机iphone7和iPhone8,我必须使用“cordova.plugins.diagnostic.switchToLocationSettings()”我不确定,但它总是通过else“openNativeSettingsTest未激活!”
cordova.plugins.diagnostic.switchToLocationSettings();
不支持iOS。这就是为什么我添加了window.cordova.plugins.settings.open(“位置”
,如果设备是iOS。使用我上面添加的内容。它将100%工作。