谷歌地图API无法读取PlaceService。

14

我正在使用谷歌地图API和它的PlacesService遇到问题。尽管我已经正确加载了places库,但它仍然显示“无法读取未定义的属性'PlacesService'”。地图本身可以正常工作和加载。有任何想法吗?以下是代码:

<div id="map-canvas"></div>

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3&libraries=place‌s"></script>
<script type="text/javascript">
    var myLatlng;
    var map;
    var marker;

    function initialize() {
        myLatlng = new google.maps.LatLng(fooLat, fooLng);

        var mapOptions = {
            zoom: 17,
            center: myLatlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP,
            scrollwheel: false,
            draggable: true
        };

        map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

        var service = new google.maps.places.PlacesService(map);

        var request = { placeId: 'fooPlaceId'};
        service.getDetails(request, callback);

        function callback (place, status) {
            if (status == google.maps.places.PlacesServiceStatus.OK) {
                marker = new google.maps.Marker({
                    position: place.position,
                    map: map,
                    title: place.name
                });
            }
        };
    }

    google.maps.event.addDomListener(window, 'load', initialize);
</script>

更新: 我刚刚尝试了一段来自谷歌官方的代码,结果出现了同样的错误。


2
如果您有答案,请将其发布为答案并接受它,而不是编辑问题。 - geocodezip
3个回答

31

此示例需要 Places 库。在使用 API 密钥首次加载 API 时,请包含 libraries=places 参数。

例如:

<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places">


6
注意:如果需要启用多个库,请用逗号分隔它们 - 例如 &libraries=geometry,places - conceptdeluxe

0

对于我来说,问题在于我没有将 .bind(this) 应用到服务的回调函数上。


-3
这是答案:我直接从某个页面(可能是这里、stackoverflow或谷歌API示例页面之一)复制了包含行。问题似乎在于,由于某种原因,在库的名称中有一个不可见字符,我的CMS编辑器没有注意到。因此,在复制时要小心!

1
不确定为什么这个被踩了 - 如果你复制了OP的“libraries”查询字符串参数,你会在“places”的“e”和“s”之间得到三个不可见字符:E2、80和8C(十六进制)。我没想到会出现这种情况! - Jon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接