【问题标题】:Google Maps API Text Search RequestGoogle Maps API 文本搜索请求
【发布时间】:2016-04-07 15:19:24
【问题描述】:

我是 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>

【问题讨论】:

  • 服务返回的状态是什么?如果它不是“OK”,你的代码不会做任何事情让你知道。
  • 我不知道,我复制了这个函数,因为在 Google Maps API 文档和其他示例中是相同的。但问题不存在。

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


【解决方案1】:
  1. API 密钥是可选的,但您必须注意此说明。

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

  1. 如果您异步加载资源,则需要脚本 URL 中的回调参数。在这种情况下,一旦加载了谷歌地图脚本,它就会调用你的函数。在您开始使用它的情况下,您应该将 async 属性添加到 &lt;script&gt; 标记并从代码中删除直接的 ini() 函数调用。 Here you find documented explanation for callback param

  2. 您的代码不起作用,因为您指定了 radius 参数,这需要同时指定 location。如果您将与mapOptions 中的center 参数相同的位置添加到请求对象,它应该可以工作。 Just check available options description.

【讨论】:

  • 感谢您提供的信息,已修复的错误,但它给了我另一个错误。 Uncaught ReferenceError: createMarker is not defined 如果不是太麻烦,你能再帮帮我吗?
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多