Я работаю над работой в Codeigniter PHP + jQuery, где работодатели вводят свое местоположение, и мы используем API Карт Google для его построения. Хотя это и привело к огромным результатам юзабилити, проблема заключается в том, что мы пытаемся отобразить эти места для соискателей, которых они запутали, и трудно визуально различить (они читают так: «02905, в 2 милях от», «171 John St., 4 миль "," Провиденс, RI, 10 миль ".
Я хочу, чтобы можно было отменить геолокацию от долготы / широты до заданного уровня (в идеале, название города), чтобы в результатах поиска я мог указать, что места будут перечислены следующим образом: «Провидение, RI, 10 миль», Провиденс, RI, 5 миль "," Кранстон, RI, 16 миль ".
Есть ли способ обратить геокодирование в город? Я вижу много примеров способов обращения геокода к ближайшему адресуемому адресу, но не способ контролировать уровень.
Надеюсь, это ясно! Не стесняйтесь комментировать любые вопросы, о которых вы нуждаетесь.
Геокодер Google, который поддерживает обратное геокодирование, возвращает адреса_компонентов . Вам просто нужно вытащить компонент адреса, помеченный locality
и political
если вы просто хотите название города. Если вы хотите также указать состояния, они помечены administrative_area_level_1
БЕСПЛАТНЫЕ ИСТОЧНИКИ (например, Creative Commons)
географические названия
Если вы ищете бесплатные источники (как свободы), вы можете использовать API-интерфейс Geonames findNearbyPlaceName.
Например, следующее возвращается к ближайшему Placename:
http://api.geonames.org/findNearbyPlaceName?lat=47.3&lng=9&username=demo
Более подробная информация доступна здесь
http://www.geonames.org/export/web-services.html#findNearbyPlaceName
Freebase
Вместо одиночной точки требуется ограниченная рамка. Образец вызова:
Geocoder.ca
Обратное геокодирование для североамериканских адресов.
Информация: http://geocoder.ca/
Пример вызова: http://geocoder.ca/?latt=40.70771000786733&longt=-74.0109443664550&reverse=1&allna=1&geoit=xml&corner=1&jsonp=1&callback=test
Map Quest API
Использование номинальной услуги Open Street Map:
http://open.mapquestapi.com/nominatim/v1/search?q=50.4,30.4&format=json
БЕСПЛАТНЫЕ ИСТОЧНИКИ
Yahoo PlaceFinder
Документация http://developer.yahoo.com/geo/placefinder/
Пример вызова:
http://where.yahooapis.com/geocode?q=38.898717,+-77.035974&gflags=R&appid=%5Byourappidhere%5D
API Карт Google
Документация:
http://code.google.com/apis/maps/documentation/geocoding/#ReverseGeocoding
Разве вы не можете просто сделать полный адрес, а затем бросить улицу и номер?
Я бы сказал, что было бы более полезно использовать полный адрес, чтобы получить более точное расстояние (даже если вы показываете только город, штат).
EDIT: если вы это сделаете, по крайней мере, он должен быть возвращен в стандартной форме, после чего вы сможете легко повторно вывести данные, из которых вы хотите.
Реверсные службы геокодирования (такие как Google, Yahoo и GeoNames) будут хорошо работать для этой цели с несколькими оговорками:
Я запускаю веб-сайт, который предлагает ряд коммерческих географических веб-API, и продает библиотеки Java, которые мы создали для поддержки этих API. Один из них (который имеет только покрытие в США) использует правильную полигональную карту городов и поселков в США, чтобы вернуть результат, содержащий ваш запрос. Это точно и быстро, поэтому, если это критически важный компонент вашей системы, я предлагаю взглянуть на наш веб-сайт:
Страница, которая предназначена для поиска городов из lat / lon:
Я искал API для преобразования lat / long в город. Похоже, это был оригинальный вопрос и в этой теме.
Я видел данные « http://download.geonames.org/export/dump/ », совместно используемые в другом потоке stackoverflow. Учитывая координаты lat / long, как мы можем узнать город / страну? , и реализовал мой собственный веб-сервис.
Вы можете увидеть, как он работает на http://scatter-otl.rhcloud.com/location?lat=36&long=-78.9 Просто измените широту и долготу для своих местоположений.
Он развернут на OpenShift (платформа RedHat). Первый вызов после длительного периода ожидания может занять некоторое время, но обычно производительность удовлетворительная. Не стесняйтесь использовать эту услугу, как вам нравится …
Кроме того, вы можете найти источник проекта на странице https://github.com/turgos/Location .
Для геолокации Html5 требуется разрешение пользователя. Если вы не хотите этого поведения, вы можете обратиться за внешним поставщиком, например https://geoip-db.com . Они предлагают бесплатную услугу геолокации на основе ip-адресов.
Попробуйте этот пример:
<!DOCTYPE html> <html> <head> <meta name="viewport" content="initial-scale=1.0, user-scalable=no"/> <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> <title>Geo City Locator</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> </head> <body > <div>Country: <span id="country"></span></div> <div>State: <span id="state"></spa></div> <div>City: <span id="city"></span></div> <div>Latitude: <span id="latitude"></span></div> <div>Longitude: <span id="longitude"></span></div> <div>IP: <span id="ip"></span></div> <script> $.getJSON('https://geoip-db.com/json/geoip.php?jsonp=?') .done (function(location) { $('#country').html(location.country_name); $('#state').html(location.state); $('#city').html(location.city); $('#latitude').html(location.latitude); $('#longitude').html(location.longitude); $('#ip').html(location.IPv4); }); </script> </body> </html>