Я использую Angular JS. Моя цель - получить список изображений flickr на основе местоположения и взять идентификаторы изображений, возвращенные из запроса, и передать их в другой запрос, чтобы получить больше информации для каждой фотографии, которая будет отображаться в результатах. Вот что я имею, но я не могу получить правильное значение, возвращенное из моей второй функции поиска. Хотя это кажется длинным вопросом, я просто хочу знать, как получить правильное значение в моей второй функции, чтобы я мог назначить его моим результатам.Flickr API - Получить идентификатор изображения и перейти ко второму запросу
Это в моем services.js
//flickr location search
APIRequest.fkrSearch = function(lat, lon, rad){
fkrAPI = $resource('https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=5956ffe850b325e0b121525800af5b31&lat='+lat+'&lon='+lon+'&radius=5km&format=json&nojsoncallback=1', { dataType: 'jsonp', jsonp: 'jsoncallback' });
return fkrAPI.get().$promise.then(function (data){
console.log(data);
return data;
});
};
Вот мой запрос в моем контроллере.
$scope.resultPosts = []; //global variable to hold results
if ($scope.locationSearch.dataSource.fkr){
$scope.fkrLoading = true;
console.log('search Flickr');
OSINTAPIRequest.fkrSearch($scope.lat, $scope.lng, $scope.radius).then(function(data){
if (data.error){
toastr.error(data.error.error_msg, 'Flickr Error['+data.error.error_code+']');
} else {
if (data.photos.photo.length > 0){
var fkrAppend = 0;
for(var i=0; i < data.photos.photo.length; i++){
fkrAppend++;
var fkrImageId = data.photos.photo[i].id;
$scope.resultPosts.push({
SourcePostID: data.photos.photo[i].id,
Timestamp: '',
PostLatitude: $scope.fkrGetLatLng(data.photos.photo[i].id),
PostLongitude: $scope.fkrGetLatLng(data.photos.photo[i].id),
PostMedia: 'https://farm'+data.photos.photo[i].farm+'.staticflickr.com/'+data.photos.photo[i].server+'/'+data.photos.photo[i].id+'_'+data.photos.photo[i].secret+'.jpg',
PostType: 'image',
PostAvatar: 'https://pingendo.github.io/pingendo-bootstrap/assets/user_placeholder.png',
PostMarker: 'assets/img/fkrMarker.png',
DataSource: 'flickr',
Display:$scope.resultFilter.fkr
});
}
Эта функция возвращает список изображений идентификаторов для фотографий Geotagged в давание широту/долготу, но не возвращает фактические данные о местоположении в результатах для меня перейти к результатам и построить точку карта. Поэтому вы увидите, что в моих результатахPosts.push я пытаюсь передать идентификатор возвращенного изображения в функцию fkrGetLatLng с помощью этой строки (PostLatitude: $scope.fkrGetLatLng(data.photos.photo[i].id))
... функция выглядит так.
$scope.fkrGetLatLng = function (fkrImageId){
OSINTAPIRequest.fkrGetLatLong(fkrImageId).then(function(data){
var fkrLat = data.photo.location.latitude;
var fkrLng = data.photo.location.latitude;
//console.log (fkrLat+','+fkrLng);
return fkrLat;
});
}
И это запрос в сервисах JS. Я получаю правильные данные для каждого запроса, но не назначает PostLatitude правильное значение (или любое значение вообще).
//flickr location search - get lat long
APIRequest.fkrGetLatLong = function(fkrImageId){
fkrAPI = $resource('https://api.flickr.com/services/rest/?method=flickr.photos.geo.getLocation&api_key=5956ffe850b325e0b121525800af5b31&photo_id='+fkrImageId+'&format=json&nojsoncallback=1', { dataType: 'jsonp', jsonp: 'jsoncallback' });
return fkrAPI.get().$promise.then(function (data){
//console.log(data);
return data;
});
};
ли вы имеете в виду, чтобы назначить data.photo.location.latitude как к fkrLat и fkrLng в fkrGetLatLng? –
хорошо нет точно. Я делал это только для проверки функции, прежде чем пытаться вернуть fkrGetLatLng два значения. – cmgsakell