Hello,
my app has a problem with geolocation stuff.
I want the app to get the current device position. Currently, I’m using $cordovaGeolocation. At the end, I just get the two following errors:
ionic.bundle.js:25642 TypeError: Cannot read property ‘coords’ of undefined at vendorSearchCtrl.js:61
ionic.bundle.js:25642 TypeError: Cannot read property ‘geometry’ of undefined at vendorSearchCtrl.js:57
function init() {
$scope.getPosition();
$scope.getAllVendors();
};
$scope.getPosition = function() {
// Ermittelt die aktuelle Position
var posOptions = {timeout: 10000, enableHighAccuracy: false};
$cordovaGeolocation.getCurrentPosition(posOptions)
.then(function (position) {
// Für die Navigation
$scope.PosLat = position.coords.latitude
$scope.PosLng = position.coords.longitude
// Für das anzeigen der Entfernung
$scope.position = position;
}, function(err) {
// error
});
}
// Gibt alle Anbieter aus
$scope.getAllVendors = function() {
vendorService.getAllVendors()
.success(function(data) {
// Daten im View verfügbar machen
$scope.vendors = data;
// Adresse zu einem String zusammensetzen und dem Objekt hinzufügen
for(var i = 0; i < $scope.vendors.length; i++) {
$scope.vendors[i].adresse = $scope.vendors[i].strasse + " " + $scope.vendors[i].hausnummer + " " + $scope.vendors[i].ort;
}
// Konvertiert die Adresse in Längen- und Breitengrad
angular.forEach($scope.vendors, function(value) {
googleMapsService.convertAddress(value.adresse)
.success(function (data) {
// Schreibt die Lng/Lat in das vorgesehene Eigenschaft des Anbieter Objektes
value.lat = data.results[0].geometry.location.lat;
value.lng = data.results[0].geometry.location.lng;
// Ermittelt die Distanz zwischen dem aktuellen Standort und den Zielen
var from = new google.maps.LatLng($scope.position.coords.latitude, $scope.position.coords.longitude);
var to = new google.maps.LatLng(value.lat, value.lng);
var distance = google.maps.geometry.spherical.computeDistanceBetween(from, to).toFixed(2);
value.distanz = distance/1000;
});
});
// Nachdem gesucht wurde, wird die Tastatur geschlossen
if (window.cordova && window.cordova.plugins && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.close();
}
// Auflistung aller Anbieter anzeigen
$scope.showAll = true;
// Auflistung gesuchter Anbieter ausblenden
$scope.showSpecific = false;
// Fehlermeldung ausblenden
$scope.errorBox = false;
})
.error(function(data, status, headers, config) {
// error handle
});
};