PlacesService和html节点的需要

时间:2015-01-16 18:00:44

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

<html>
    <head>
        <script src="http://maps.googleapis.com/maps/api/js?sensor=false&amp;libraries=places&language=pt-PT" type="text/javascript"></script>
        <script type="text/javascript">
            function initialize() {
                var request = {
                    placeId: 'ChIJO_PkYRozGQ0R0DaQ5L3rAAQ'
                };

                service = new google.maps.places.PlacesService(document.getElementById('places'));
                service.getDetails(request, callback);

                function callback(place, status) {
                    if (status == google.maps.places.PlacesServiceStatus.OK) {
                        console.log(place);
                    }
                }
            }
            google.maps.event.addDomListener(window, 'load', initialize);
        </script>
    </head>

    <body>  <div id="places"></div> </body>

</html>

我的代码运行良好,但我不知道为什么需要使用

PlacesService(document.getElementById('some id')); 

如果我只使用PlacesService();,我会收到错误消息。 html_attributions为none:html_attributions: Array[0]length: 0

那么,我的代码是好的,或者我该怎么办?

http://jsfiddle.net/c6p14g4d/

2 个答案:

答案 0 :(得分:5)

(如果您在6个月后仍然无法解决问题)您的代码将正常运行should adhere to Google's policies surrounding the PlacesService

根据我的理解,&#34;归因&#34;是某种将信息来源归因于特定合作伙伴的信息,例如,来自Yelp的评论(我不知道他们是否与Yelp合作,但这是他的想法)。显然,合作伙伴希望信息的最终消费者知道是谁提供的。

这个想法是,当您使用PlacesService执行搜索时,如果有附加的地图,它将呈现&#34; attributions&#34;自动。因此,如果您没有地图,则库将尝试将属性呈现为html节点。隐藏该节点(或地图)是违反该策略的。

重要的是要注意在使用库时html_attributions数组在所有情况下可能并不总是为空,但只要您在其中提供可见节点即可。 DOM,你很好,因为如果它们存在,库会自动用属性填充节点。

答案 1 :(得分:0)

来自documentation,需要是HTMLDivElement或地图:

Constructor                                     Description
PlacesService(attrContainer:HTMLDivElement|Map) Creates a new instance of the PlacesService that renders attributions in the specified container.