有些人之前曾问过这个问题,但没有任何喜悦。但是,似乎最近谷歌提供了通过他们的api从谷歌地方获取评论的可用性。 https://developers.google.com/maps/documentation/javascript/places
我的网址显示了我想要的确切谷歌地方的json,但是,我看不到一个关于如何仅从此获取评论并且完全卡住的示例。他们的示例显示了如何显示地图,但不显示如何仅提取评论。有没有人这样做过?如果是这样,有没有一个如何做的例子?感谢。
答案 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