google.maps.places 未定义

新手上路,请多包涵

我有一个网站,可通过 Google 地图、街道和地点加载 3 个独立的位置“视图”。

请在下面查看我的代码:

我终于让地图和街景视图正常工作,但在这方面有点挣扎。

我有一个显示与地图相同但添加了地点的选项卡。

 <script type="text/javascript"
  src="http://maps.googleapis.com/maps/api/js?v=3&key=....&sensor=false&callback=initializeMap"></script>

<script type="text/javascript">
var myLattitude = <?php echo $data["lattitude"]; ?>;
var myLongitude = <?php echo $data["longitude"]; ?>;
var poiMap;
var infowindow;

function initializePoi() {
            var poiCentre = new google.maps.LatLng(myLattitude, myLongitude);

            poiMap = new google.maps.Map(document.getElementById('poi-canvas'), {
                center: poiCentre,
                zoom: 15
            });

            var request = {
                location: poiCentre,
                radius: 500,
                types: ['store']
            };
            infowindow = new google.maps.InfoWindow();
            var service = new google.maps.places.PlacesService(poiMap);
            service.nearbySearch(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: poiMap,
                position: place.geometry.location
            });

            google.maps.event.addListener(marker, 'click', function() {
                infowindow.setContent(place.name);
                infowindow.open(poiMap, this);
            });
        }

现在这会正确初始化,但控制台会抛出以下错误:TypeError: google.maps.places is undefined

我只想知道为什么会出现此错误,我喜欢干净无误的代码。

这些地方确实正确地显示了一切。

原文由 Paul 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 343
2 个回答

您应该在 Google API URL 中添加选项 libraries=places

在您的情况下,您应该替换以下内容:

 <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3&key=....&sensor=false&callback=initializeMap"></script>

有了这个:

 <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3&key=....&sensor=false&callback=initializeMap&libraries=places"></script>

看结尾 src=""

原文由 KodeFor.Me 发布,翻译遵循 CC BY-SA 4.0 许可协议

由于最佳答案针对的是香草版本,因此这是针对那些使用 google-maps-react 的人:

添加 libraries: [‘places’] 到您的 GoogleMapReact 组件:

    <GoogleMapReact
        bootstrapURLKeys={{ key: apiKey, libraries: ['places'] }}
    ...
   />

原文由 Embedded_Mugs 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏