Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- app.factory('$geoUtils', function($cordovaGeolocation, $filter) {
- var geoUtils = this;
- geoUtils.init = function() {
- if (Number.prototype.toRadians === undefined) {
- Number.prototype.toRadians = function() {
- return this * Math.PI / 180;
- };
- }
- };
- geoUtils.init();
- geoUtils.getLatLng = function(lat, lng) {
- return {
- latitude: lat,
- longitude: lng
- };
- };
- geoUtils.getDistance = function(location1, location2, parse) {
- var lat1 = Number(location1.latitude),
- lat2 = Number(location2.latitude),
- lon1 = Number(location1.longitude),
- lon2 = Number(location2.longitude);
- var R = 6371000; // metres
- var f1 = lat1.toRadians();
- var f2 = lat2.toRadians();
- var diff_F = (lat2 - lat1).toRadians();
- var diff_L = (lon2 - lon1).toRadians();
- var a = Math.sin(diff_F / 2) * Math.sin(diff_F / 2) +
- Math.cos(f1) * Math.cos(f1) *
- Math.sin(diff_L / 2) * Math.sin(diff_L / 2);
- var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
- var d = R * c * 0.000621371192;
- return parse ? $filter('number')(Math.ceil(d)) : Math.ceil(d);
- };
- geoUtils.getBounds = function (set) {
- var obj = {
- minX: set [0].lat,
- maxX: set [0].lat,
- minY: set [0].lng,
- maxY: set [0].lng
- };
- set.reduce(function(arr, cur) {
- obj.minX = arr.minX > cur.lat ? cur.lat : arr.minX;
- obj.minY = arr.minY > cur.lng ? cur.lng : arr.minY;
- obj.maxX = arr.maxX < cur.lat ? cur.lat : arr.maxX;
- obj.maxY = arr.maxY < cur.lng ? cur.lng : arr.maxY;
- return obj;
- }, obj);
- return [
- [obj.maxX, obj.minY],
- [obj.minX, obj.maxY]
- ];
- };
- return geoUtils;
- })
- .factory('$safeGL', function($q, $cordovaGeolocation, $localstorage) {
- this.getCurrentPosition = function(options) {
- var defer = $q.defer();
- $cordovaGeolocation.getCurrentPosition(angular.extend({
- timeout: 3000,
- enableHighAccuracy: false
- }, options)).then(function(res) {
- defer.resolve(angular.extend(res, {
- available: true
- }));
- }, function(e) {
- defer.resolve(angular.extend(e, {
- available: false
- }));
- });
- return defer.promise;
- };
- return this;
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement