UNPKG

ngmap

Version:
68 lines (62 loc) 1.92 kB
/** * @ngdoc service * @name NavigatorGeolocation * @description * Provides [defered/promise API](https://docs.angularjs.org/api/ng/service/$q) * service for navigator.geolocation methods */ /* global google */ (function() { 'use strict'; var $q; /** * @memberof NavigatorGeolocation * @param {Object} geoLocationOptions the navigator geolocations options. * i.e. { maximumAge: 3000, timeout: 5000, enableHighAccuracy: true }. * If none specified, { timeout: 5000 }. * If timeout not specified, timeout: 5000 added * @param {function} success success callback function * @param {function} failure failure callback function * @example * ``` * NavigatorGeolocation.getCurrentPosition() * .then(function(position) { * var lat = position.coords.latitude, lng = position.coords.longitude; * .. do something lat and lng * }); * ``` * @returns {HttpPromise} Future object */ var getCurrentPosition = function(geoLocationOptions) { var deferred = $q.defer(); if (navigator.geolocation) { if (geoLocationOptions === undefined) { geoLocationOptions = { timeout: 5000 }; } else if (geoLocationOptions.timeout === undefined) { geoLocationOptions.timeout = 5000; } navigator.geolocation.getCurrentPosition( function(position) { deferred.resolve(position); }, function(evt) { console.error(evt); deferred.reject(evt); }, geoLocationOptions ); } else { deferred.reject("Browser Geolocation service failed."); } return deferred.promise; }; var NavigatorGeolocation = function(_$q_) { $q = _$q_; return { getCurrentPosition: getCurrentPosition }; }; NavigatorGeolocation.$inject = ['$q']; angular.module('ngMap'). service('NavigatorGeolocation', NavigatorGeolocation); })();