我使用Places API来获取某个地点附近的餐馆和酒店等地点,并且工作正常。我想在指定位置附近获得兴趣点或地标。我尝试的内容如下:
var service = new google.maps.places.PlacesService(map);
service.nearbySearch({
location: latlng,
radius: 1500,
}, function (results, status) {
if (status === google.maps.places.PlacesServiceStatus.OK) {
var type1 = results[i].types[0];
var type2 = results[i].types[1];
if (type1 == 'point_of_interest' || type2 == 'point_of_interest') {
//process place details
}
}
});
例如:对于巴黎战神广场附近的标志性搜索,它应该返回附近的艾菲尔铁塔等地方。但是,它只返回酒店和住宿等地方。
如何让它返回给定位置附近的兴趣点?任何帮助解决这个问题将不胜感激。
答案 0 :(得分:3)
您可以在地点搜索请求中使用关键字参数。根据documentation关键字参数是:
与所有可用字段匹配的字词,包括但不限于姓名,类型和地址,以及客户评论和其他第三方内容。
像keyword: "POI"
这样的东西可以成功。请看下面的例子。
代码段
var map, service;
function initialize() {
var champdemars = new google.maps.LatLng(48.8556475,2.2986304);
var mapOptions = {
zoom:14,
center: champdemars
};
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
service = new google.maps.places.PlacesService(map);
service.nearbySearch({
location: champdemars,
radius: 1500,
keyword: "POI"
}, function (results, status) {
if (status === google.maps.places.PlacesServiceStatus.OK) {
results.forEach(function (p) {
var m = new google.maps.Marker({
position: p.geometry.location,
icon: {
url: p.icon,
scaledSize: new google.maps.Size(24,24)
},
title: p.name,
map: map
});
});
} else {
alert(status);
}
});
}

html,
body,
#map-canvas {
height: 100%;
width: 100%;
margin: 0px;
padding: 0px
}

<div id="map-canvas"></div>
<script async defer src="https://maps.googleapis.com/maps/api/js?v=3&libraries=places&callback=initialize"></script>
&#13;
正如您所见,埃菲尔铁塔,军队博物馆或联合国教科文组织等POI现已出现在地图上。