I am trying to use the google places library for a nearby search request: https://developers.google.com/maps/documentation/javascript/places#place_search_requests
i just want to pull the json response and put it in a html list, i do now want to show results on a map or something else. I do not want to use map at all. But in documentation it states that there has to be a map
service = new google.maps.places.PlacesService(**map**);
in order to pass it as an argument in the PlacesService function. What i do now is adding a map with height:0 but it still consumes much amount of memory (i develop a sencha touch 2 app and memory is important). Is there any workaround of using nearby search requests without a map? I do not want to use the Google Places API as it does not support JSONP requests.
The autocomplete request is available at no charge, and the subsequent Place Details call gets charged based on regular Place Details pricing. A Place Details request generates Data SKUs (Basic, Contact, and/or Atmosphere) – depending on the fields that are specified in the request.
As documented the PlacesService accepts as argument either a map or an node where to render the attributions for the results.
So you only have to use the node (a node being an html element) instead of the map.
Please note: hiding the attributions violates the places-policies(also hiding the map when used as argument, because the map will show the attributions)
This also may be interesting to you: Google places API does this violate the TOC?
If you're using jQuery:
var service = new google.maps.places.PlacesService($('#tag-id').get(0));
If plain Javascript:
var service = new google.maps.places.PlacesService(document.createElement('div'));
Then carry on as usual with the rest of the example code:
service.nearbySearch(request, callback);
Live demo of this example on jsFiddle.
Note: This example uses 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>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With