Если у вас есть база данных городов, посмотрите на этот пример , который показывает, как создавать запросы SQL для этой конкретной задачи.
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;
Так что, если у вас есть свой собственныйбаза данных или города, или вы готовы создать базу данных, в которой есть местоположения и координаты определенных городов (может быть доступно где-то в Интернете), тогда это решение будет работать для вас.
В качестве альтернативы, если у вас нетбазы данных, и вы хотите использовать API, такие как Google Maps, взгляните на Google Geacoding API и, в частности, обратное геокодирование.Запрос типа:
http://maps.googleapis.com/maps/api/geocode/json?latlng=40.7,-73.9&sensor=false
предоставит вам возможные адреса для предоставленной вами широты и широты.
К сожалению, Google Places API (близлежащие места) работает только для ресторанов, магазинов, баров и т.д ..