В Великобритании, как мне найти адрес с учетом GPS-координат? - PullRequest
5 голосов
/ 08 апреля 2010

Извините, это не очень четко определенный вопрос, я думаю об идее для продукта, поэтому нужно знать, что возможно ...

Скажем, я стою у входной двери дома, учитывая координаты GSP со смартфона, как мне найти адрес, по которому я стою?

Достаточно ли хорош GPS для этого?

Сколько стоят данные / услуги, которые мне нужны для использования?

Какие еще вопросы я должен задать по этому поводу?

Ответы [ 5 ]

5 голосов
/ 08 апреля 2010

GPS ограничен возвратом координат широты и долготы вашей позиции.

Чтобы преобразовать эти координаты в адрес, вам потребуется использовать внешний источник данных. Акт преобразования географической координаты в адрес часто называют обратное геокодирование .

Существует несколько бесплатных сервисов обратного геокодирования, таких как , которые предлагаются в API Карт Google . Однако перед использованием такой услуги обязательно прочитайте и поймите Условия использования .


Например, вы можете выполнить обратное геокодирование с помощью API Карт Google, используя следующий HTTP-запрос:

Простой CSV:

http://maps.google.com/maps/geo?q=40.756041,-73.986939&output=csv&sensor=false

Возвращает:

200,8,"601-699 7th Ave, New York, NY 10036, USA"

Более сложный XML:

http://maps.google.com/maps/geo?q=40.756041,-73.986939&output=xml&sensor=false

Возвращает:

<kml xmlns="http://earth.google.com/kml/2.0"><Response> 
  <name>40.756041,-73.986939</name> 
  <Status> 
    <code>200</code> 
    <request>geocode</request> 
  </Status> 
  <Placemark id="p1"> 
    <address>601-699 7th Ave, New York, NY 10036, USA</address> 
    <AddressDetails Accuracy="8" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"><Country><CountryNameCode>US</CountryNameCode><CountryName>USA</CountryName><AdministrativeArea><AdministrativeAreaName>NY</AdministrativeAreaName><SubAdministrativeArea><SubAdministrativeAreaName>New York</SubAdministrativeAreaName><Locality><LocalityName>New York</LocalityName><DependentLocality><DependentLocalityName>Manhattan</DependentLocalityName><Thoroughfare><ThoroughfareName>601-699 7th Ave</ThoroughfareName></Thoroughfare><PostalCode><PostalCodeNumber>10036</PostalCodeNumber></PostalCode></DependentLocality></Locality></SubAdministrativeArea></AdministrativeArea></Country></AddressDetails> 
    <ExtendedData> 
      <LatLonBox north="40.7595131" south="40.7532178" east="-73.9835667" west="-73.9898620" /> 
    </ExtendedData> 
    <Point><coordinates>-73.9869192,40.7560331,0</coordinates></Point> 
  </Placemark> 
  <Placemark id="p2"> 
    <address>Times Sq - 42nd St Station, New York, NY 10116, USA</address> 
    <AddressDetails Accuracy="9" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"><AddressLine>Times Sq - 42nd St Station</AddressLine></AddressDetails> 
    <ExtendedData> 
      <LatLonBox north="40.7591946" south="40.7528994" east="-73.9838014" west="-73.9900966" /> 
    </ExtendedData> 
    <Point><coordinates>-73.9869490,40.7560470,0</coordinates></Point> 
  </Placemark> 
  <Placemark id="p3"> 
    <address>Times Square - 42nd Street</address> 
    <AddressDetails Accuracy="9" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"><AddressLine>Times Square - 42nd Street</AddressLine></AddressDetails> 
    <ExtendedData> 
      <LatLonBox north="40.7591476" south="40.7528524" east="-73.9838524" west="-73.9901476" /> 
    </ExtendedData> 
    <Point><coordinates>-73.9870000,40.7560000,0</coordinates></Point> 
  </Placemark> 
  <Placemark id="p4"> 
    <address>W 42 St - 7 Av, New York, NY 10116, USA</address> 
    <AddressDetails Accuracy="9" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"><AddressLine>W 42 St - 7 Av</AddressLine></AddressDetails> 
    <ExtendedData> 
      <LatLonBox north="40.7591446" south="40.7528494" east="-73.9839964" west="-73.9902916" /> 
    </ExtendedData> 
    <Point><coordinates>-73.9871440,40.7559970,0</coordinates></Point> 
  </Placemark> 
  <Placemark id="p5"> 
    <address>New Amsterdam Theatre, New York, NY 10036, USA</address> 
    <AddressDetails Accuracy="9" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"><Country><CountryNameCode>US</CountryNameCode><CountryName>USA</CountryName><AdministrativeArea><AdministrativeAreaName>NY</AdministrativeAreaName><Locality><LocalityName>New York</LocalityName><PostalCode><PostalCodeNumber>10036</PostalCodeNumber></PostalCode><AddressLine>New Amsterdam Theatre</AddressLine></Locality></AdministrativeArea></Country></AddressDetails> 
    <ExtendedData> 
      <LatLonBox north="40.7593416" south="40.7530464" east="-73.9842484" west="-73.9905436" /> 
    </ExtendedData> 
    <Point><coordinates>-73.9873960,40.7561940,0</coordinates></Point> 
  </Placemark> 
  <Placemark id="p6"> 
    <address>W 42 St - 7 Av, New York, NY 10116, USA</address> 
    <AddressDetails Accuracy="9" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"><AddressLine>W 42 St - 7 Av</AddressLine></AddressDetails> 
    <ExtendedData> 
      <LatLonBox north="40.7594606" south="40.7531654" east="-73.9842484" west="-73.9905436" /> 
    </ExtendedData> 
    <Point><coordinates>-73.9873960,40.7563130,0</coordinates></Point> 
  </Placemark> 
  <Placemark id="p7"> 
    <address>Times Sq - 42nd St Station, New York, NY 10116, USA</address> 
    <AddressDetails Accuracy="9" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"><AddressLine>Times Sq - 42nd St Station</AddressLine></AddressDetails> 
    <ExtendedData> 
      <LatLonBox north="40.7589406" south="40.7526454" east="-73.9832194" west="-73.9895146" /> 
    </ExtendedData> 
    <Point><coordinates>-73.9863670,40.7557930,0</coordinates></Point> 
  </Placemark> 
  <Placemark id="p8"> 
    <address>W 42 St - Broadway, New York, NY 10116, USA</address> 
    <AddressDetails Accuracy="9" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"><AddressLine>W 42 St - Broadway</AddressLine></AddressDetails> 
    <ExtendedData> 
      <LatLonBox north="40.7588236" south="40.7525284" east="-73.9831654" west="-73.9894606" /> 
    </ExtendedData> 
    <Point><coordinates>-73.9863130,40.7556760,0</coordinates></Point> 
  </Placemark> 
  <Placemark id="p9"> 
    <address>7 Av - W 41 St, New York, NY 10116, USA</address> 
    <AddressDetails Accuracy="9" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"><AddressLine>7 Av - W 41 St</AddressLine></AddressDetails> 
    <ExtendedData> 
      <LatLonBox north="40.7586296" south="40.7523344" east="-73.9843024" west="-73.9905976" /> 
    </ExtendedData> 
    <Point><coordinates>-73.9874500,40.7554820,0</coordinates></Point> 
  </Placemark> 
</Response></kml> 

Просто измените параметр q с помощью latitude,longitude.


Обратите внимание, что бесплатная версия API Карт Google имеет ограничение в 15 000 запросов на IP-адрес в день. ( Часто задаваемые вопросы по API Карт Google )

Если вы планируете интенсивно использовать службы обратного геокодирования Google, вы можете рассмотреть возможность использования Профессиональной версии API Карт Google .

Premier API автоматически поставляется с « расширенными возможностями геокодирования с большим объемом и скоростью », поэтому ограничения стандартного API должны быть заменены новыми квотами.

В качестве дополнительного примечания, согласно одному неофициальному источнику (от апреля 2008 г.), стоимость Premier API начинается с 10 000 долларов США в год.

2 голосов
/ 08 апреля 2010

Вы можете использовать различные бесплатные услуги, например, предоставляемые Google, для обратного геокодирования (технического термина) адреса из некоторых координат GPS. Я настоятельно рекомендую поиграть с их API, полная документация доступна здесь:

http://code.google.com/apis/maps/documentation/services.html

1 голос
/ 09 апреля 2010

Кстати, Ordinance Survey только что опубликовал свои данные под очень свободным лицензированием, и я думаю, что у них также есть веб-сервис. Возможно, вы захотите взглянуть на это.

1 голос
/ 08 апреля 2010

Google Геолокационный сетевой протокол может помочь; Я думаю это сработало для британских локаций, когда я в последний раз пробовал.

0 голосов
/ 22 декабря 2012

OpenStreetMap (бесплатная карта мира с открытым исходным кодом, созданная добровольцами) использует Nominatim, что кажется очень хорошим. См

http://wiki.openstreetmap.org/wiki/Nominatim#Reverse_Geocoding_.2F_Address_lookup

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...