首页 > 解决方案 > findPlaceFromQuery 返回错误的“PlacesServiceStatus”

问题描述

我遵循了https://developers.google.com/maps/documentation/javascript/places#find_place_from_query中 findPlaceFromQuery() 方法的代码示例。

我有查询部分的确切代码。但是,PlacesServiceStatus返回的总是不行。我尝试更改对象query中的值,request但结果始终相同。

知道为什么会这样吗?

我在下面粘贴相关的代码片段以方便参考。它与示例代码基本相同。我只是else在末尾添加了该子句:

var map;
var service;
var infowindow;

function initMap() {
  var mapCenter = new google.maps.LatLng(-33.8617374,151.2021291);

  map = new google.maps.Map(document.getElementById('map'), {
    center: mapCenter,
    zoom: 15
  });

  var request = {
    query: 'Museum of Contemporary Art Australia',
    fields: ['photos', 'formatted_address', 'name', 'rating', 'opening_hours', 'geometry'],

  service = new google.maps.places.PlacesService(map);
  service.findPlaceFromQuery(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]);
    }
  }
  else{
      alert("status bad");
  }
}

标签: javascriptgoogle-places-api

解决方案


人们需要注意一些预先请求才能使此代码正常工作。要使场所 API 请求正常工作,必须执行以下操作:

  1. 必须像这样从调用方法显式添加位置库&libraries=places。这是因为地方 API 不是地图 API 的标准。

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

  1. 使用的 API 密钥必须具有来自 google 控制台的正确位置凭据。这个链接解释了如何做到这一点。

推荐阅读