Google Places API,如何获取评论?

时间:2014-12-31 18:53:16

标签: javascript json google-places-api google-places

有些人之前曾问过这个问题,但没有任何喜悦。但是,似乎最近谷歌提供了通过他们的api从谷歌地方获取评论的可用性。 https://developers.google.com/maps/documentation/javascript/places

我的网址显示了我想要的确切谷歌地方的json,但是,我看不到一个关于如何仅从此获取评论并且完全卡住的示例。他们的示例显示了如何显示地图,但不显示如何仅提取评论。有没有人这样做过?如果是这样,有没有一个如何做的例子?感谢。

2 个答案:

答案 0 :(得分:14)

一旦你拥有了一个你可以做的地方的身份

  var request = {
    placeId: 'place-ID-here' // example: ChIJN1t_tDeuEmsRUsoyG83frY4
  };

  var service = new google.maps.places.PlacesService(map); // map is your map object

  service.getDetails(request, function(place, status) {
    if (status == google.maps.places.PlacesServiceStatus.OK) {
      console.log(place.reviews);
    }
  });

使用完整的工作示例进行更新( https://codepen.io/gpetrioli/pen/OmQyEE

var map, service;

function initMap() {
  var central_park = new google.maps.LatLng(40.764243, -73.973049);

  map = new google.maps.Map(document.getElementById("map"), {
    center: central_park,
    zoom: 14
  });

  var request = {
    location: central_park,
    radius: "500",
    types: ["food"]
  };

  service = new google.maps.places.PlacesService(map);
  service.nearbySearch(request, searchResult);
}

function searchResult(results, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    // show first result on map and request for details
    var place = results[0];
    var marker = new google.maps.Marker({
      position: place.geometry.location,
      map: map,
      title: place.name
    });
    var infowindow = new google.maps.InfoWindow({
      content: place.name
    });
    infowindow.open(map, marker);

    service.getDetails({placeId: place.place_id}, function(place, status) {
      if (status == google.maps.places.PlacesServiceStatus.OK) {
        let reviewEl = document.querySelector('.reviews');
        for (let review of place.reviews){
          let li = document.createElement('li');
          li.innerHTML = `<div>Author: ${review.author_name}</div>
                          <em>${review.text}</em>
                          <div>Rating: ${review.rating} star(s)</div>`;
          reviewEl.appendChild(li);
        }
      }
    });
  }
}
* {
  box-sizing: border-box;
}

#map {
  width: 500px;
  height: 400px;
}

.reviews {
  padding:0;
  list-style:none;
}

.reviews li+li {
  margin-top: 1em;
  padding-top: 1em;
  border-top: 1px solid black;
}
.reviews em{display:block;margin:0.3em 0;}
<div id="map"></div>
<ul class="reviews"></ul>

<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDbDfZUthAGL2BW3jg9xhWglf6HLpJQ1AU&callback=initMap&libraries=places"
    async defer></script>

答案 1 :(得分:1)

您可以使用Google Maps API:

https://maps.googleapis.com/maps/api/place/details/json?place_id=<place_id>&fields=reviews&key=<api_key>

更多内容:https://developers.google.com/places/web-service/details#PlaceDetailsResults