谷歌地方图书馆没有地图

我正在尝试为附近的search请求使用Google地方库: https : //developers.google.com/maps/documentation/javascript/places#place_search_requests

我只是想拉JSON响应,并把它放在一个HTML列表中,我现在想要在地图上显示结果或其他东西。 我根本不想使用地图。 但是在文档中它指出必须有一张地图

service = new google.maps.places.PlacesService(**map**); 

以便在PlacesService函数中将其作为parameter passing。 我现在做的是添加一个高度为0的地图,但它仍然消耗大量的内存(我开发一个sencha触摸2应用程序和内存是重要的)。 有没有使用附近的search请求没有地图的任何解决方法? 我不想使用Google Places API,因为它不支持JSONP请求。

如文档所述,PlacesService将接受作为参数的地图或节点,以在其中呈现结果的属性

所以你只需要使用节点(一个节点是一个html元素),而不是地图。

请注意:隐藏属性违反了地方政策(当用作参数时也隐藏地图,因为地图会显示属性)

这也可能会让你感兴趣: 谷歌的地方API这是否违反TOC?


例如:简而言之

如果你使用jQuery:

 var service = new google.maps.places.PlacesService($('#tag-id').get(0)); 

如果使用纯Javascript:

 var service = new google.maps.places.PlacesService(document.createElement('div')); 

然后像往常一样继续执行示例代码的其余部分 :

  service.nearbySearch(request, callback); 

例如:使用返回的细节

在jsFiddle上演示这个例子 。

注意:这个例子使用jQuery

 <ul class="reviews__content" id="reviews__content"> </ul> <div id="service-helper"></div> <script async defer src="https://maps.googleapis.com/maps/api/js?key=GOOGLE_API_KEY_HERE&libraries=places&callback=getRelevantGoogleReviews"> </script> <script type="text/javascript"> window.getRelevantGoogleReviews = function(){ var service = new google.maps.places.PlacesService($('#service-helper').get(0)); // note that it removes the content inside div with tag '#service-helper' service.getDetails({ placeId: 'ChIJAwEf5VFQqEcRollj8j_kqnE' // get a placeId using https://developers.google.com/places/web-service/place-id }, function(place, status) { if (status === google.maps.places.PlacesServiceStatus.OK) { var resultcontent = ''; for (i=0; i<place.reviews.length; ++i) { //window.alert('Name:' + place.name + '. ID: ' + place.place_id + '. address: ' + place.formatted_address); resultcontent += '<li class="reviews__item">' resultcontent += '<div class="reviews__review-er">' + place.reviews[i].author_name + '</div>'; var reviewDate = new Date(place.reviews[i].time * 1000); var reviewDateMM = reviewDate.getMonth() + 1; var reviewDateFormatted = reviewDate.getDate() + '/' + reviewDateMM + '/' + reviewDate.getFullYear(); resultcontent += '<div class="reviews__review-date">' + reviewDateFormatted + '</div>'; resultcontent += '<div class="reviews__review-rating reviews__review-rating--' + place.reviews[i].rating +'"></div>'; if (!!place.reviews[i].text){ resultcontent += '<div class="reviews__review-comment">' + place.reviews[i].text + '</div>'; } resultcontent += '</li>' } $('#reviews__content').append(resultcontent); } }); } </script>