7

Google ジオコーディング サービスを使用して、システムに入力された都市名 (および地域と国) が存在することを確認し、緯度/経度を取得しています。

ただし、タイプミスをした場合は「推測」しているように見え、エラーが発生した場合でも応答が返されることがわかっています。

たとえば、「Beverton, Ontario, Canada」をリクエストすると、Beaverton の緯度/経度が返されますが、間違った都市名を指定したことは示されません。

CSV 応答タイプを使用していますが、200 応答コードを取得しています。

サービスがこれを行うのを防ぐことはできますか?

編集:明確にするために... Googleは入力を修正しています(失敗すると予想される場合)。これが行われたかどうかを知る必要があります。

4

3 に答える 3

4

入力ミスがあるとジオコーダーが判断した場合、それを知らせる方法はありません。あなたの最善の策は、応答に対してクエリをチェックすることであるというソールの答えに同意します。

一致する要素を見つけるために、いくつかの応答値に対して入力のいくつかの要素をチェックする必要があることを指摘したかっただけです。この場合、「Beaverton」は「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>

アップデート:

これを実際に実装するのは不可能かもしれません。入力が「Beverton, Ontario, Canada」の場合、これら 3 つの単語のどれを確認する必要があるかをどのように判断しますか? そのうちの2つはうまく一致します。別の順序で入力された場合はどうなりますか?

于 2009-07-21T20:18:35.193 に答える
0

注:上記の@Chris B による回答を参照してください。Chris が指摘するように、これを実装するのは不可能かもしれません。

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>
于 2009-07-21T19:15:31.513 に答える
0

「200 成功コード」で応答していますか? 別のステータス コードが表示される可能性があります。

Google が返すさまざまなステータス コードは次のとおりです: http://code.google.com/apis/maps/documentation/reference.html#GGeoStatusCode

于 2009-07-21T19:12:18.383 に答える