【问题标题】:Google places API "rankby=location" problemsGoogle 提出 API“rankby=location”问题
【发布时间】:2017-08-01 00:10:28
【问题描述】:

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

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

事实上,rankby='location' 选项似乎没有任何作用,因为我返回的列表中有更远的项目(使用 lat/long dist 转换),列在更靠近的项目之前等 - 并且完全相同当我将该选项注释掉时的响应(搜索半径内的所有公园)。

代码笔: 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 苦恼过?

【问题讨论】:

    标签: javascript google-places-api


    【解决方案1】:

    好的,看来我的语法有点错误。 请求的语法应该是:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      • 1970-01-01
      • 2014-11-05
      • 1970-01-01
      • 2020-09-05
      • 2020-02-09
      • 2018-01-15
      相关资源
      最近更新 更多