谷歌放置API" rankby = location"问题

时间:2017-08-01 00:10:28

标签: javascript google-places-api

所以我目前正在开发一个使用Google Places API的原型,并且正在努力使用此处显示的API文档:https://developers.google.com/places/web-service/search

简而言之,rankby =' location'选项现在似乎需要半径设置,与文档相反(如果半径被注释掉,API请求错误输出:"未捕获错误:缺少参数。您必须指定半径。")。

事实上,rankby =' location'选项似乎没有做任何事情,因为我回来的列表有更远的项目(使用lat / long dist转换),在项目更接近之前列出等等 - 并且是与我评论该选项时完全相同的响应(搜索半径范围内的所有公园。

codepen: https://codepen.io/creative-lab-sydney/pen/18afe9d8500d490cbe93be68109c5b82

简单地点的代码示例api" nearbySearch"请求:

const places = document.querySelector('#places');
const RADIUS = 700;
let request = {
  location: userLocation, // taken from navigator.geoLocation
  radius: RADIUS, // mandatory now (?) RADIUS = 50;
  type: ['park'],
  rankby: 'distance',
};
const service = new google.maps.places.PlacesService(document.querySelector('#moo'));
service.nearbySearch(request, callback); 
function callback(results, status) {
  if (status === google.maps.places.PlacesServiceStatus.OK) {
    Object.keys(results).map(key => {
      let item = results[key];
      let placeLocation = {
        lat: item.geometry.location.lat(),
        lng: item.geometry.location.lng()
      };
      let distObj = getDistance(userLocation, placeLocation);
      let div = document.createElement('div');
      div.appendChild(document.createTextNode(`${item.name} - dist: ${distObj.text}`));
      places.appendChild(div);
    });
  }
}

最近有没有其他人在使用此API?

1 个答案:

答案 0 :(得分:2)

好的,好像我的语法略有错误。 请求的语法应为:

var request = {
   location: userLocation,
   type: ['park'],
   rankBy: google.maps.places.RankBy.DISTANCE,
 };