Я хочу использовать Foursquare-API, чтобы получить места в данном городе. У API есть две конечные точки, которые могут помочь мне с моей проблемой:
venue/explore
а также venue/search
Теперь проблема в том, что в обоих из них отсутствуют функции, которые мне понадобятся в другой конечной точке. Например, я не могу использовать конечную точку исследования, потому что не могу передать идентификаторы категорий в API Foursquare для поиска только в заданных категориях.
Так что теперь я уже иметь использовать конечную точку поиска, но у конечной точки поиска есть другая проблема. Параметр намерения. Параметр намерения принимает checkin, browse, global, match
checkin
находит объекты, которые пользователь будет регистрировать в текущий момент времени. Проблема: я хочу запустить cronjob ночью, чтобы он никогда не нашел музей, потому что он, вероятно, закрыт ночью.
browse
есть проблема, что я должен передать параметр радиуса. Но так как не все города имеют одинаковый радиус, я также нашел бы результаты других городов в моем поисковом запросе. Например, если я буду искать объекты в Кельне с радиусом 30 км, я также найду POI в Дюссельдорфе. Но в некоторых других городах радиус 30 км является хорошим, и я бы нашел POI только в данном городе. Я не могу точно сказать, что у меня правильный радиус.
global
поиск не зависит от местоположения, поэтому он также бесполезен
match
не включает в себя категории, так что это также бесполезно
Хорошо, давайте подведем итоги вместе, что мне нужно сделать
Мне нужно найти места, которые находятся в определенном городе, и имеют только определенные категории!
Я создал этот URL здесь для запроса данных из foursquare
Это теперь возвращает места из Токио: (я ограничил его до 3, поэтому у нас не слишком много данных отображается здесь)
{
"meta":{
"code":200
},
"response":{
"venues":[
{
"id":"4b7af3d1f964a520e3472fe3",
"name":"伊勢丹 新宿店 (Isetan Shinjuku)",
"contact":{
"phone":"+81333521111",
"formattedPhone":"+81 3-3352-1111"},
"location":{
"address":"新宿3-14-1",
"lat":35.69167888630371,
"lng":139.70466434955597,
"postalCode":"160-0022",
"cc":"JP",
"city":"新宿区",
"state":"東京都",
"country":"Japan",
"formattedAddress":[
"新宿3-14-1",
"新宿区, Tōkyō",
"160-0022",
"Japan"]
},
"categories":[
{
"id":"4bf58dd8d48988d1f6941735",
"name":"Kaufhaus",
"pluralName":"Kaufhäuser",
"shortName":"Kaufhaus",
"icon":{
"prefix":"https:\/\/ss3.4sqi.net\/img\/categories_v2\/shops\/departmentstore_",
"suffix":".png"},
"primary":true
}
],
"verified":false,
"stats":{
"checkinsCount":38525,
"usersCount":14542,
"tipCount":104
},
"url":"http:\/\/www.isetan.co.jp\/icm2\/jsp\/store\/shinjuku\/",
"specials":{
"count":0,
"items":[
]
},
"hereNow":{
"count":0,
"summary":"Keiner hier",
"groups":[
]
},
"referralId":"v-1416841962"},
{
"id":"4b6a8c00f964a5204fd82be3",
"name":"東急 田園都市線 渋谷駅",
"contact":{
"phone":"+81354585143",
"formattedPhone":"+81 3-5458-5143"},
"location":{
"address":"道玄坂2-1-1",
"lat":35.65325468817092,
"lng":139.69734217064342,
"cc":"JP",
"city":"渋谷区",
"state":"東京都",
"country":"Japan",
"formattedAddress":[
"道玄坂2-1-1",
"渋谷区, Tōkyō",
"Japan"]
},
"categories":[
{
"id":"4bf58dd8d48988d129951735",
"name":"Bahnhof",
"pluralName":"Bahnhöfe",
"shortName":"Bahnhof",
"icon":{
"prefix":"https:\/\/ss3.4sqi.net\/img\/categories_v2\/travel\/trainstation_",
"suffix":".png"},
"primary":true
}
],
"verified":false,
"stats":{
"checkinsCount":51145,
"usersCount":6686,
"tipCount":21
},
"specials":{
"count":0,
"items":[
]
},
"hereNow":{
"count":0,
"summary":"Keiner hier",
"groups":[
]
},
"referralId":"v-1416841962"},
{
"id":"543365cd498e6a226ce59c11",
"name":"la kagu ラカグ",
"contact":{
"phone":"+81352276977",
"formattedPhone":"+81 3-5227-6977",
"twitter":"la_kagu",
"facebook":"470802349690219",
"facebookUsername":"lakagu.kagurazaka",
"facebookName":"ラカグ la kagu"},
"location":{
"address":"矢来町67",
"lat":35.70377775661292,
"lng":139.73318235755823,
"postalCode":"162-0805",
"cc":"JP",
"city":"Tokyo",
"state":"東京都",
"country":"Japan",
"formattedAddress":[
"矢来町67",
"新宿区, Tōkyō",
"162-0805",
"Japan"]
},
"categories":[
{
"id":"4bf58dd8d48988d1f8941735",
"name":"Möbel- \/ Einrichtungsgeschäft",
"pluralName":"Möbel- \/ Einrichtungsgeschäfte",
"shortName":"Möbel \/ Einrichtung",
"icon":{
"prefix":"https:\/\/ss3.4sqi.net\/img\/categories_v2\/shops\/furniture_",
"suffix":".png"},
"primary":true
}
],
"verified":false,
"stats":{
"checkinsCount":468,
"usersCount":429,
"tipCount":5
},
"url":"http:\/\/www.lakagu.com",
"specials":{
"count":0,
"items":[
]
},
"hereNow":{
"count":0,
"summary":"Keiner hier",
"groups":[
]
},
"referralId":"v-1416841962"}
],
"geocode":{
"what":"",
"where":"35.6894875,139.69170639999993",
"feature":{
"cc":"JP"},
"parents":[
]
}
}
}
Это теперь имеет несколько проблем:
Это приводит к проблеме, что я не могу легко сравнить города, чтобы увидеть, находится ли POI в запрашиваемом городе. Однако я мог бы проверить, совпадают ли город или штат, но это может отличаться в каждой стране, поэтому я вижу в этом проблему.
Итак, каков наилучший способ получить только города в данном городе для определенных категорий, не зависящих от времени, местоположения и т. Д., И отфильтровать объекты из городов, которые не являются запрошенным городом?
Задача ещё не решена.
Других решений пока нет …