Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

google places library without map

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.

like image 389
user985409 Avatar asked Jan 15 '13 18:01

user985409


People also ask

Is Google Places autocomplete free?

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.


1 Answers

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?


Example: in a nutshell

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); 

Example: using details returned

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> 
like image 176
Dr.Molle Avatar answered Sep 29 '22 22:09

Dr.Molle