(html) google 地图搜索结果和 maps/places api 调用之间的区别(更少的结果)

difference between (html) google maps search results and maps/places api calls (fewer results)

我想让德国城市的餐馆嵌入网页并进行处理。我通过 lat/long 和半径(近似值)来识别这些城市。

在 google 地图上进行在线搜索时,我看到了 100 多个结果。

google maps restaurant search duesseldorf

我的实施尝试(主要基于此处找到的示例)仅 returns 少了很多结果(您可以复制到 .html 页面)。我还尝试添加 API 键,我在这里删除了它。

(我认为 "request" 对搜索结果来说很有趣。)

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <style type="text/css">
        html {
            height: 100%;
        }

        body {
            height: 100%;
            margin: 0;
            padding: 0;
        }

        #map_canvas {
            height: 100%;
        }

        #search-panel {
            position: absolute;
            top: 5px;
            left: 50%;
            margin-left: -180px;
            width: 350px;
            z-index: 5;
            background-color: #fff;
            padding: 5px;
            border: 1px solid #999;
        }

        #target {
            width: 345px;
        }
    </style>
    <script type="text/javascript">
        var aDone = false;
        var bDone = false;
        function initializea() {
            aDone = true;
            if (aDone && bDone)
                initialize();
        }
        function initializeb() {
            bDone = true;
            if (aDone && bDone)
                initialize();
        }
        function initialize() {
            {
                // cologne
                var plat = 50.9344595;
                var plong = 6.9476285;
                // duesseldorf
                plat = 51.2277411;
                plong = 6.7734556;

                var ppos = new google.maps.LatLng(plat, plong);
                var mapOptions = {
                    mapTypeId: google.maps.MapTypeId.ROADMAP,
                    //draggable: false,
                    zoom: 13,
                    center: ppos
                };
                map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
                var request = {
                    location: ppos,
                    radius: 4000,
                    //keyword: 'restaurant+food',
                    type: 'food'
                    // key: 'MY_API_KEY makes no difference'
                };
                infowindow = new google.maps.InfoWindow();
                service = new google.maps.places.PlacesService(map);
                service.search(request, callback);
            };
        }
        function callback(results, status) {
            if (status == google.maps.places.PlacesServiceStatus.OK) {
                for (var i = 0; i < results.length; i++) {
                    createMarker(results[i]);
                }
            }
        }
        function createMarker(place) {
            var placeLoc = place.geometry.location;
            var marker = new google.maps.Marker({
                map: map,
                position: place.geometry.location,
                icon: place.icon
            });

            google.maps.event.addListener(marker, 'click', function () {
                infowindow.setContent("<b>" + place.name + "</b><br/>" + place.vicinity);
                infowindow.open(map, this);
            });
        }

        function loadScript() {
            var script = document.createElement("script");
            script.type = "text/javascript";
            script.src = "https://maps.googleapis.com/maps/api/js?sensor=false&libraries=places&callback=initializea";
            document.body.appendChild(script);
        }

        window.onload = loadScript;
    </script>
</head>
<body onload="initializeb()">
    <div id="search-panel">
        <input id="target" type="text" placeholder="Search Box">
    </div>
    <div id="map_canvas" style="width:100%; height:100%"></div>
</body>
</html>

我还尝试了 type/keyword 的变体,使用餐厅和食物。结果不会变得更好或更频繁。

如何获得更多结果?

(我想为用户提供合理的就餐场所选择,而不仅仅是 50 万人口城市的 4 个(以及 100 多家餐馆,google 也知道并返回地图搜索) .)

类似问题(没有有用的答案):

Why do some results show up in Google Maps but not in Places API results?

Different results in Google Places API and Google Maps

Different results in Google Places API and Google Maps

基本上:不关心 maps.google.com ,当你使用地图时 - API API 是相关的,几乎所有的东西都被记录下来,并且文档从不保证return 什么都有。

您 运行 一个 nearbySearch,其中 return 最多 20(分页 60)结果,您无法通过 nearbySearch 获得更多结果。

您可以 运行 radarSearch 而不是 return 最多 200 个结果(但细节较少)