mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-11-07 15:07:13 +08:00
103 lines
2.1 KiB
JavaScript
103 lines
2.1 KiB
JavaScript
angular.module('ionic.weather.services', ['ngResource'])
|
|
|
|
.factory('Geo', function($q) {
|
|
return {
|
|
getLocation: function() {
|
|
var q = $q.defer();
|
|
|
|
navigator.geolocation.getCurrentPosition(function(position) {
|
|
q.resolve(position);
|
|
}, function(error) {
|
|
q.reject(error);
|
|
});
|
|
|
|
return q.promise;
|
|
}
|
|
};
|
|
})
|
|
|
|
.factory('Flickr', function($q, $resource, FLICKR_API_KEY) {
|
|
var baseUrl = 'http://api.flickr.com/services/rest/'
|
|
|
|
var flickrSearch = $resource(baseUrl, {
|
|
method: 'flickr.groups.pools.getPhotos',
|
|
group_id: '1463451@N25',
|
|
safe_search: 1,
|
|
jsoncallback: 'JSON_CALLBACK',
|
|
api_key: FLICKR_API_KEY,
|
|
format: 'json'
|
|
}, {
|
|
get: {
|
|
method: 'JSONP'
|
|
}
|
|
});
|
|
|
|
return {
|
|
search: function(tags, lat, lng) {
|
|
var q = $q.defer();
|
|
|
|
flickrSearch.get({
|
|
tags: tags,
|
|
lat: lat,
|
|
lng: lng
|
|
}, function(val) {
|
|
q.resolve(val);
|
|
}, function(httpResponse) {
|
|
q.reject(httpResponse);
|
|
});
|
|
|
|
return q.promise;
|
|
}
|
|
};
|
|
})
|
|
|
|
.factory('Weather', function($q, $resource, WUNDERGROUND_API_KEY) {
|
|
var baseUrl = 'http://api.wunderground.com/api/' + WUNDERGROUND_API_KEY;
|
|
|
|
var locationResource = $resource(baseUrl + '/geolookup/conditions/q/:coords.json', {
|
|
callback: 'JSON_CALLBACK'
|
|
}, {
|
|
get: {
|
|
method: 'JSONP'
|
|
}
|
|
});
|
|
|
|
var forecastResource = $resource(baseUrl + '/forecast/q/:coords.json', {
|
|
callback: 'JSON_CALLBACK'
|
|
}, {
|
|
get: {
|
|
method: 'JSONP'
|
|
}
|
|
});
|
|
|
|
return {
|
|
getForecast: function(lat, lng) {
|
|
var q = $q.defer();
|
|
|
|
forecastResource.get({
|
|
coords: lat + ',' + lng
|
|
}, function(resp) {
|
|
q.resolve(resp);
|
|
}, function(httpResponse) {
|
|
q.reject(httpResponse);
|
|
});
|
|
|
|
return q.promise;
|
|
},
|
|
|
|
getAtLocation: function(lat, lng) {
|
|
var q = $q.defer();
|
|
|
|
locationResource.get({
|
|
coords: lat + ',' + lng
|
|
}, function(resp) {
|
|
q.resolve(resp);
|
|
}, function(error) {
|
|
q.reject(error);
|
|
});
|
|
|
|
return q.promise;
|
|
}
|
|
}
|
|
})
|