Сервис геокодирования Google возвращает ответ для поддельного адреса

Minunit является невероятно простой платформой поблочного тестирования. Я использую его для модульного теста c код микроконтроллера для avr.

7
задан Buzz 21 July 2009 в 20:14
поделиться

3 ответа

Геокодер не может сообщить вам, если он считает, что вы допустили опечатку. Я согласен с ответом Сола, что лучше всего сверять свой запрос с ответом.

Я просто хотел указать, что вам нужно будет сравнить несколько элементов вашего ввода с несколькими значениями ответа, чтобы найти элементы, которые должны совпадать. В этом случае «Бивертон» был обнаружен внутри «DependentLocalityName».

<?xml version="1.0" encoding="UTF-8" ?>
<kml xmlns="http://earth.google.com/kml/2.0"><Response>
  <name>Beverton, Ontario, Canada</name>
  <Status>
    <code>200</code>
    <request>geocode</request>
  </Status>
  <Placemark id="p1">

    <address>Beaverton, Brock, ON, Canada</address>
    <AddressDetails Accuracy="4" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"><Country><CountryNameCode>CA</CountryNameCode><CountryName>Canada</CountryName><AdministrativeArea><AdministrativeAreaName>ON</AdministrativeAreaName><SubAdministrativeArea><SubAdministrativeAreaName>Durham Regional Municipality</SubAdministrativeAreaName><Locality><LocalityName>Brock</LocalityName><DependentLocality><DependentLocalityName>Beaverton</DependentLocalityName></DependentLocality></Locality></SubAdministrativeArea></AdministrativeArea></Country></AddressDetails>
    <ExtendedData>
      <LatLonBox north="44.4502166" south="44.4183470" east="-79.1199562" west="-79.1839858" />
    </ExtendedData>

    <Point><coordinates>-79.1519710,44.4342840,0</coordinates></Point>
  </Placemark>
</Response></kml>

Обновление:

Это может оказаться невозможным на самом деле. Если вы введете «Бевертон, Онтарио, Канада», как узнать, какое из этих трех слов проверить? Два из них отлично подойдут. Что, если они введены в другом порядке?

4
ответ дан 7 December 2019 в 14:36
поделиться

Отвечает ли он «кодом успеха 200»? Есть вероятность, что он может выдавать вам другой код статуса.

Вот различные коды статуса, которые возвращает Google: http://code.google.com/apis/maps/documentation/reference.html#GGeoStatusCode

0
ответ дан 7 December 2019 в 14:36
поделиться

ПРИМЕЧАНИЕ. См. ответ @Chris B выше. Как указывает Крис, это может быть невозможно реализовать.

Нужно ли вам использовать тип ответа CSV? Если нет, другие типы ответов, такие как KML, предоставляют достаточно подробностей, чтобы определить местоположение, к которому относятся координаты. Вы можете проверить введенные вами данные по элементу LocalityName ответа.

<kml xmlns="http://earth.google.com/kml/2.0">
  <Response>
    <name>1600 amphitheatre mountain view ca</name>
    <Status>
      <code>200</code>
      <request>geocode</request>
    </Status>
    <Placemark>
      <address> 
        1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA
      </address>
      <AddressDetails Accuracy="8">
        <Country>
          <CountryNameCode>US</CountryNameCode>
          <AdministrativeArea>
            <AdministrativeAreaName>CA</AdministrativeAreaName>
           <SubAdministrativeArea>
             <SubAdministrativeAreaName>Santa Clara</SubAdministrativeAreaName>
             <Locality>
               <LocalityName>Mountain View</LocalityName>
               <Thoroughfare>
                 <ThoroughfareName>1600 Amphitheatre Pkwy</ThoroughfareName>
               </Thoroughfare>
               <PostalCode>
                 <PostalCodeNumber>94043</PostalCodeNumber>
               </PostalCode>
             </Locality>
           </SubAdministrativeArea>
         </AdministrativeArea>
       </Country>
     </AddressDetails>
     <Point>
       <coordinates>-122.083739,37.423021,0</coordinates>
     </Point>
   </Placemark>
  </Response>
</kml>
0
ответ дан 7 December 2019 в 14:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: