One of my app function is to get user current location and load the google map using ngCordova geolocation pluggin, and it works great, the problem that I encounter is when I load the app without internet connection then reconnect the internet and recall the map function, it gives me an error google is not defined at $cordovaGeolocation.getCurrentPosition at console. any idea what is the problem?
- Load app without internet
- Connect to the internet
- Recall map function
- get error google is not defined at $cordovaGeolocation.getCurrentPosition
map.js
controllerModule.controller('MapCtrl', function($scope, $rootScope, $state, $cordovaGeolocation, $ionicPopup) {
$scope.getCoord = function() {
console.log("Called");
$rootScope.show();
$scope.LocationFail = false;
var options = {
timeout: 10000,
enableHighAccuracy: true
};
$cordovaGeolocation.getCurrentPosition(options).then(function(position) {
var latLng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
var mapOptions = {
center: latLng,
zoom: 15,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
$scope.map = new google.maps.Map(document.getElementById("map"), mapOptions);
//Wait until the map is loaded
google.maps.event.addListenerOnce($scope.map, 'idle', function() {
var marker = new google.maps.Marker({
map: $scope.map,
animation: google.maps.Animation.DROP,
position: latLng
});
var infoWindow = new google.maps.InfoWindow({
content: "You are here!"
});
google.maps.event.addListener(marker, 'click', function() {
infoWindow.open($scope.map, marker);
});
});
$scope.LocationFail = false;
$rootScope.hide();
}, function(error) {
var alertPopup = $ionicPopup.alert({
title: 'Oops..',
template: '<center>Could not get location</center>'
});
// console.log("Could not get location");
$scope.LocationFail = true;
$rootScope.hide();
});
}
$scope.getCoord();
});
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
<title></title>
<link href="lib/ionic/css/ionic.css" rel="stylesheet">
<link href="css/style.css" rel="stylesheet">
<!-- IF using Sass (run gulp sass first), then uncomment below and remove the CSS includes above
<link href="css/ionic.app.css" rel="stylesheet">
-->
<!-- ionic/angularjs js -->
<script src="lib/ionic/js/ionic.bundle.js"></script>
<script src="lib/ngstorage/ngStorage.min.js"></script>
<!-- cordova script (this will be a 404 during development) -->
<script src="lib/ngCordova/dist/ng-cordova.js"></script>
<script src="cordova.js"></script>
<!-- your app's js -->
<script src="js/app.js"></script>
<script src="js/controllers.js"></script>
<script src="js/controllers/intro.js"></script>
<script src="js/controllers/map.js"></script>
<script src="http://maps.google.com/maps/api/js?key=AIzaSyBdwhOpne8C0tSnyCHOCD1vrTJdxziPgDQ&sensor=true"></script>
</head>
<body ng-app="starter">
<ion-nav-bar class="bar-light" align-title="center">
<ion-nav-back-button>
</ion-nav-back-button>
</ion-nav-bar>
<ion-nav-view></ion-nav-view>
</body>
</html>
an error message
ionic.bundle.js:20434 ReferenceError: google is not defined
at $cordovaGeolocation.getCurrentPosition.then.$ionicPopup.alert.title (map.js:17)
at processQueue (ionic.bundle.js:22016)
at ionic.bundle.js:22032
at Scope.$eval (ionic.bundle.js:23228)
at Scope.$digest (ionic.bundle.js:23044)
at ionic.bundle.js:23267
at completeOutstandingRequest (ionic.bundle.js:13732)
at ionic.bundle.js:14112(anonymous function) @ ionic.bundle.js:20434(anonymous function) @ ionic.bundle.js:17384processQueue @ ionic.bundle.js:22024(anonymous function) @ ionic.bundle.js:22032$eval @ ionic.bundle.js:23228$digest @ ionic.bundle.js:23044(anonymous function) @ ionic.bundle.js:23267completeOutstandingRequest @ ionic.bundle.js:13732(anonymous function) @ ionic.bundle.js:14112
66VM249:35 WebSocket connection to 'ws://localhost:35729/livereload' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSEDWrappedWebSocket @ VM249:35__connector.Connector.Connector.connect @ livereload.js?snipver=1:191(anonymous function) @ livereload.js?snipver=1:172(anonymous function) @ livereload.js?snipver=1:292(anonymous function) @ livereload.js?snipver=1:283