我是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>
答案 0 :(得分:2)
Google Maps JavaScript API不需要API密钥即可正常运行。不过,我们强烈建议您使用API控制台密钥加载Maps API,以便监控应用程序的Maps API使用情况。
如果以异步方式加载资源,则需要脚本URL中的回调参数。在这种情况下,只要加载Google Maps脚本,它就会调用您的函数。在您开始使用它的情况下,您应该将async属性添加到<script>
标记,并从代码中删除直接ini()
函数调用。 Here you find documented explanation for callback param
您的代码无法正常工作,因为您指定了radius
param,同时也需要指定location
。如果您将center
中的mapOptions
参数添加到请求对象中,则它应该可以正常工作。 Just check available options description.
答案 1 :(得分:0)
您从@Mihails Boturins 的回答中得到了其余的帮助。我会回答你在上一条评论中提出的问题。
您的代码中没有定义这样的 createMarker
函数。您必须像 this