Here is my solution:
getUserPosition() {
if (this.platform.is('cordova')) {
this.diagnostic.isLocationEnabled().then(enabled => {
if (enabled) {
this.diagnostic.getLocationMode().then(locationMode => {
if (locationMode.HIGH_ACCURACY) {
this.geolocation.getCurrentPosition().then((position)
=> {
// populate my data
});
} else {
this.askForGPS();
}
});
}
});
} else { // gets my browser location
navigator.geolocation.getCurrentPosition(position => {
// populate my data
}, (err) => {
// handle err
});
}
}
askForGPS() {
const alert = this.alertCtrl.create({
title: 'Title',
message: 'Ask here for HIGH ACCURACY GPS',
buttons: [{
text: 'Cancel',
role: 'cancel',
handler: () => {
alert.dismiss();
}
}, {
text: 'Go to Config',
handler: () => {
this.diagnostic.switchToLocationSettings();
}
}]
});
alert.present();
}
After this I need that the user set the High Accuracy mode and accept google
terms to use.
[ Full content available at:
https://github.com/apache/cordova-plugin-geolocation/issues/114 ]
This message was relayed via gitbox.apache.org for [email protected]