Мы в основном используем geonames
и хотели бы получить geonameIds города, который возвращается в ответе user_tagged
place на facebook-graph-api. Есть идеи, как это сделать?
Geonames имеет cities
api (http://www.geonames.org/export/JSON-webservices.html#citiesJSON),, но ему нужен регион для поиска городов. У меня есть только lat & lng
значения определенной точки. Я попытался расширить эти lat & lng
значения для создания регион, но geonames city api возвращает города в соответствии с логикой, которую они предоставляют, например, капиталы идут первыми и т. д. В документации говорится:
// geonames documentation
cities api results are ordered by relevancy (capital/population).
Placenames close together are filterered out and only the larger name is
included in the resulting list.
Итак, это не сработало. У вас есть какие-нибудь предложения?
const getFacebookTaggedPlaces = async (user, dispatch) => {
let providerId = user.additionalUserInfo.profile.id;
let accessToken = user.credential.accessToken;
let apicall = await fetch(
`https://graph.facebook.com/v3.2/${providerId}?
fields=tagged_places&access_token=${accessToken}`
);
return apicall.json();
};
Пример ответа на запрос графика:
created_time: "2019-01-06T17:29:42+0000"
id: "103284597428186"
place:
id: "107070695995672"
location:
latitude: 40.758358162265
longitude: -73.986325268733
name: "New York City Times Square"
Это соответствующий ответ geonames, который мы ожидаем.
countrycode: "US"
fcl: "P"
fclName: "city, village,..."
fcode: "PPL"
fcodeName: "populated place"
geonameId: 5128581
lat: 40.7142691
lng: -74.0059729
name: "New York"
population: 8175133
toponymName: "New York City"
wikipedia: "en.wikipedia.org/wiki/New_York_City"