【发布时间】:2017-01-30 22:15:27
【问题描述】:
所以我听说没有真正干净的方法来批量请求referenced here 到GooglePlacesAPI;明白了。
但必须有一个解决办法。
const retrievePlaces = (google, map, request) => {
var places = [];
var newPlaces = []
var service = new google.maps.places.PlacesService(map);
return new Promise(function(resolve, reject) {
service.nearbySearch(request, function(results, status){
if( status == "OK" ){
for (var i = 0; i < results.length; i++) {
var place = results[i];
places.push(place);
}
resolve(places);
}
});
});
}
我首先使用上述函数检索我的位置(这很好用)。然后我使用:
const retrieveDetails = ( google, map, places ) => {
var gmap = {
map: map,
google: google
};
var placeIds = places.map(function(place){
return { placeId: place.place_id }
});
var promiseArray = placeIds.map( place => getPlaceDetailsPromise( place, gmap )
.then( res => ({res}) )
.catch( err => ({err}) ) );
Promise.all(promiseArray)
.then(results => {
console.log(results);
});
}
和:
const getPlaceDetailsPromise = (obj, gmap) => new Promise((resolve, reject) => {
var service = new gmap.google.maps.places.PlacesService(gmap.map);
service.getDetails(obj, (place, status) => {
if (status === google.maps.places.PlacesServiceStatus.OK) {
console.log(" Status OK", place);
resolve(place);
} else {
console.log("Not OK");
}
});
});
尝试从PlaceDetailsAPI 检索所有地点的详细信息。糟糕的是,它实际上在一定程度上有效,但它总是只返回 9 个响应而不再返回。此外,它们出现故障。
是否有人对如何检索每个地点的详细信息有任何见解?
【问题讨论】:
标签: javascript google-maps google-maps-api-3 google-places-api google-places