2009-12-09 4 views
4

Есть ли способ эффективно/аккуратно вывести окрестности в пределах города на основе переданного по адресу, zip, city, state в Google Geocoder?Возвращение по основанию по адресу с геодезистом Google/API

Всякий раз, когда я пытаюсь сделать это с помощью HTTP (идеальное решение) возвращает следующую информацию

<kml> 
− 
<Response> 
<name>anthonys cookies san francisco California</name> 
− 
<Status> 
<code>200</code> 
<request>geocode</request> 
</Status> 
− 
<Placemark id="p1"> 
<address>San Francisco, CA, USA</address> 
− 
<AddressDetails Accuracy="4"> 
− 
<Country> 
<CountryNameCode>US</CountryNameCode> 
<CountryName>USA</CountryName> 
− 
<AdministrativeArea> 
<AdministrativeAreaName>CA</AdministrativeAreaName> 
− 
<SubAdministrativeArea> 
<SubAdministrativeAreaName>San Francisco</SubAdministrativeAreaName> 
− 
<Locality> 
<LocalityName>San Francisco</LocalityName> 
</Locality> 
</SubAdministrativeArea> 
</AdministrativeArea> 
</Country> 
</AddressDetails> 
− 
<ExtendedData> 
<LatLonBox north="37.8454521" south="37.7043396" east="-122.2913561" west="-122.5474749"/> 
</ExtendedData> 
− 
<Point> 
<coordinates>-122.4194155,37.7749295,0</coordinates> 
</Point> 
</Placemark> 
</Response> 
</kml> 

Если вы заметили, «имя локальности» до сих пор говорит, что Сан-Франциско?

На данный момент я открыт для использования Javascript API/call в отличие от HTTP-вызова, это просто казалось излишним (и большей частью головной боли) для того, что я пытаюсь сделать.

В идеале, мне нужно, чтобы это работало в Сан-Франциско, но было бы неплохо, если бы я мог заставить его работать для всех крупных городов США.

+0

Какое местоположение/название окрестности вы ожидаете вместо Сан-Франциско в этом случае? В прошлом я видел, как Google Maps занимался районами. –

+0

Я надеялся на что-то вроде «Миссия» ИЛИ «Миссия» в этом случае. Я тоже знаю, что Google должен быть более чем способен обрабатывать такой запрос, поскольку данные, безусловно, в вашем распоряжении, но, как видно здесь, он возвращает весь город Сан-Франциско в качестве названия местности? – dnyce

ответ

4

Насколько я знаю, вы не можете получить данные о соседстве через API карт google. Вы можете попробовать другой веб-сервис, например API-интерфейс соседства Urban Mapping: http://developer.urbanmapping.com/demo/ или Maponics (http://www.maponics.com/Neighborhood_Boundaries/neighborhood_boundaries.html). API-интерфейс Urban Mapping содержит методы для получения окрестности по длине lat, а также различные элементы адреса.

+0

Я перешлю эту информацию разработчику, который заменил меня на этот конкретный проект. – dnyce

+1

Это неправда. Раньше я использовал Карты Google, чтобы получить имена мест. – beth

0

Используйте бесплатный сервис от http://www.maxmind.com/app/ip-location

Вы никогда не собираетесь, чтобы получить его 100% точным, но это должно дать вам фору.

Существует также геотаргетинг в HTML5, но не все браузеры поддерживают его еще, и я не уверен, как извлечь геолокацию пользователя.

+0

Отличное обслуживание и советы, но похоже, что эта услуга говорит больше о географическом расположении посетителей вашего сайта на основе их IP. Я специально собираюсь вытащить данные о местоположении из некоторого API (в данном случае Google), исходя из адреса, переданного API из формы. то есть в приведенном выше примере соседство должно отображаться как «Район миссии» или «Миссия». – dnyce

+0

Извините, я неправильно понял, что вы имели в виду. Я не думаю, что Google Maps поддерживает такие области, как то, что вам нужно. – Noodles

2

Данные обновления - окрестности, когда они доступны, теперь предоставляются через геокодер Google через новый API V3. Соседство - это еще один тип данных в массиве address_components. Более подробная информация находится в code.google.com/apis/maps/documentation/geocoding/

4
function getGeoInfo($street,$city,$state) { 
    $url = "http://maps.googleapis.com/maps/api/geocode/json?address={$street}+{$city},+{$state}&sensor=false"; 
    $json_returned = file_get_contents($url); 
    $data = json_decode($json_returned); 
    return ($data); 
} 

Подобно тому, как, например, вы, конечно, придетесь UrlEncode переменных, и я предложил бы использовать Curl вместо * file_get_contents * функция.

Если вы var_dump return, вы увидите данные о окрестности и структуру, чтобы получить к ней доступ.

Смежные вопросы