2017-08-01 185 views
0

所以我目前的工作是利用谷歌Places API的原型,並正在與這裏顯示的API文檔掙扎:https://developers.google.com/places/web-service/search谷歌Places API的「rankby =位置」問題

總之,rankby ='位置'選項現在似乎需要半徑設置,與文檔相反(如果半徑被註釋掉,則API請求出錯:「未捕獲的錯誤:缺少參數,必須指定半徑。」)。

事實上,rankby ='location'選項似乎沒有做任何事情,因爲我返回的列表中有更多項目(使用lat/long dist轉換),在項目之前列出更近等等 - 與我對該選項發表評論(搜索半徑內的所有公園)時的迴應相同。

codepen:簡單地API https://codepen.io/creative-lab-sydney/pen/18afe9d8500d490cbe93be68109c5b82

代碼示例 「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

好吧,看起來我的語法有點不對。 請求的語法應爲:

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