(html) Google 地图搜索结果与 Maps/地点 API 调用之间的差异(结果较少)

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

本文关键字:之间 结果 调用 地点 地图 Google html 搜索结果 Maps API      更新时间:2023-09-26

我想让德国城市的餐馆嵌入和处理在网页中。我通过经度/经度和半径(用于近似值)来识别这些城市。

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

谷歌地图 餐厅搜索 杜塞尔多夫

我对实现的尝试(主要基于此处找到的示例)只返回了更少的结果(您可以复制到.html页面)。我还尝试添加 API 密钥,我在这里删除了它。

(我认为它说"请求"的地方对搜索结果来说很有趣。

<!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>

我还尝试了类型/关键字的变化,使用餐厅和食物。结果不会变得更好或更频繁。

如何获得更多结果?

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

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

为什么有些结果会显示在 Google 地图中,而不会出现在地点 API 结果中?

Google

Places API 和 Google 地图中的不同结果

Google

Places API 和 Google 地图中的不同结果

https://stackoverflow.com/questions/21230939/places-api-returning-fewer-results

基本上:不关心 maps.google.com,当你使用 maps-API 时,API 是相关的,几乎所有内容都有文档记录,并且文档从不保证返回所有内容。

您运行一个nearbySearch,它最多返回 20(分页 60)结果,您无法通过附近的搜索获得更多结果。

您可以改为运行一个返回多达 200 个结果(但细节较少)的radarSearch