biblioteca de google places sin mapa


Estoy tratando de usar la biblioteca de Google places para una solicitud de búsqueda cercana: https://developers.google.com/maps/documentation/javascript/places#place_search_requests

Solo quiero extraer la respuesta json y ponerla en una lista html, ahora quiero mostrar los resultados en un mapa u otra cosa. No quiero usar el mapa en absoluto. Pero en la documentación se afirma que tiene que haber un mapa

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

Para pasarlo como argumento en la función PlacesService. Lo que yo ahora es agregar un mapa con altura: 0 pero todavía consume mucha cantidad de memoria (desarrollo una aplicación sencha touch 2 y la memoria es importante). ¿Hay alguna solución para usar solicitudes de búsqueda cercanas sin un mapa? No quiero usar la API de Google Places, ya que no admite solicitudes JSONP.

Author: user985409, 2013-01-15

2 answers

Como está documentado, PlacesService acepta como argumento un mapa o un nodo donde renderizar las atribuciones para los resultados.

Así que solo tiene que usar el nodo (un nodo es un elemento html) en lugar del mapa.

Tenga en cuenta: ocultar las atribuciones viola las políticas places (también oculta el mapa cuando se usa como argumento, porque el mapa mostrará las atribuciones)

Esto también puede ser interesante para usted: La API de Google places viola el ¿TOC?


Ejemplo: en pocas palabras

Si estás usando jQuery:

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

Si Javascript plano:

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

Luego continúe como de costumbre con el resto del código de ejemplo :

  service.nearbySearch(request, callback);

Ejemplo: usando los detalles devueltos

Demostración en Vivo de este ejemplo en jsFiddle.

Nota: Este ejemplo usa 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>
 60
Author: Dr.Molle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:02:23

Acaba de ver al Hombre preguntando en un comentario anterior Cómo inicializar el servicio places sin inicializar un mapa? así que pensé en añadirlo aquí.

placesService = new google.maps.places.PlacesService($('#predicted-places').get(0));

Sin embargo, primero tendrá que crear un elemento html con ese id.

 1
Author: slajma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-11 00:58:28