如何使用Google Places API

时间:2016-06-03 06:44:50

标签: google-maps geolocation google-places-api

我使用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
            }
        }
    });

例如:对于巴黎战神广场附近的标志性搜索,它应该返回附近的艾菲尔铁塔等地方。但是,它只返回酒店和住宿等地方。

如何让它返回给定位置附近的兴趣点?任何帮助解决这个问题将不胜感激。

1 个答案:

答案 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;
&#13;
&#13;

正如您所见,埃菲尔铁塔,军队博物馆或联合国教科文组织等POI现已出现在地图上。