【问题标题】:How to get landmarks (points of interest) near a given location using Google Places API如何使用 Google Places API 获取给定位置附近的地标(兴趣点)
【发布时间】:2016-06-03 06:44:50
【问题描述】:

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

例如:对于巴黎 Champ de Mars 附近的地标搜索,它应该返回相当近的地方,例如埃菲尔铁塔。但是,它只返回酒店和住宿等场所。

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

【问题讨论】:

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


    【解决方案1】:

    您可以在地点搜索请求中使用关键字参数。根据文档的关键字参数是:

    要与所有可用字段匹配的术语,包括但不限于姓名、类型和地址,以及客户评论和其他第三方内容。

    所以像keyword: "POI" 这样的东西可以成为一个伎俩。请看下面的例子。

    代码 sn-p:

        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>

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多