Google Maps API文字搜索请求

时间:2016-01-04 02:25:35

标签: google-maps-api-3 google-api

我是javascript的新手,我正在开发一个需要谷歌地图的项目。 我需要使用文本搜索功能查找附近的兽医请求邮政编码不起作用,我有几个问题。

我是否需要API密钥才能使用服务位置?

我复制了代码文档谷歌地图,但不理解回调函数,我不知道我做的事情是不是错了。 如果有人知道代码有什么问题,我将非常感谢您的回复。

这是我的代码:

            <script src="https://maps.googleapis.com/maps/api/js?callback=ini&sensor=false&libraries=places"></script>

             <script type="text/javascript">

             var map;
             var vet= " veterinarys";


             ini();

                function ini()
                {
                    var mapOptions =
                    {
                        center: new google.maps.LatLng(37.7831, -122.4039 ),
                        zoom: 12,
                        mapTypeId: google.maps.MapTypeId.ROADMAP
                    }

                    map = new google.maps.Map(document.getElementById("map"), mapOptions);

                    var request = 
                    {
                    radius: '500',
                    query: vet,
                    type: ['veterinary_care']
                    };

                   service = new google.maps.places.PlacesService(map);
                   service.textSearch(request, callback);
                }

                function callback(results, status) {
                if (status == google.maps.places.PlacesServiceStatus.OK) {
                for (var i = 0; i < results.length; i++) {
                    var place = results[i];
                    createMarker(results[i]);
                    }
                  }
                }

    </script>

2 个答案:

答案 0 :(得分:2)

  1. API密钥是可选的,但您必须注意此注释。
  2.   

    Google Maps JavaScript API不需要API密钥即可正常运行。不过,我们强烈建议您使用API​​控制台密钥加载Maps API,以便监控应用程序的Maps API使用情况。

    1. 如果以异步方式加载资源,则需要脚本URL中的回调参数。在这种情况下,只要加载Google Maps脚本,它就会调用您的函数。在您开始使用它的情况下,您应该将async属性添加到<script>标记,并从代码中删除直接ini()函数调用。 Here you find documented explanation for callback param

    2. 您的代码无法正常工作,因为您指定了radius param,同时也需要指定location。如果您将center中的mapOptions参数添加到请求对象中,则它应该可以正常工作。 Just check available options description.

答案 1 :(得分:0)

您从@Mihails Boturins 的回答中得到了其余的帮助。我会回答你在上一条评论中提出的问题。

您的代码中没有定义这样的 createMarker 函数。您必须像 this

一样创建该函数