上限に達する前にキーの使用状況を監視する
割り当てヘッダーを随時確認しておけば、リクエストが実際に拒否されるよりずっと前に、上限が近づいていることが分かります。
郵便番号の欄を空欄のままにした顧客が、必ずしも不正確なデータを渡したわけではありません。ジオコーディングを使えば、たいていは住所の残りの部分からその欠けた部分を補えます。
手元にあるテキストを、少なくとも番地と市区町村を含めて/v1/forwardに送信します。入力に郵便番号がまったく含まれていなくても、結果のcomponentsオブジェクトには最も一致した候補の郵便番号が含まれます。
GET /v1/forward?q=1600 Pennsylvania Avenue, Washington&limit=1{
"status": "ok",
"query": "1600 Pennsylvania Avenue, Washington",
"results": [
{
"formatted": "1600 Pennsylvania Avenue NW, Washington, DC 20500",
"lat": 38.8977,
"lon": -77.0365,
"type": "address",
"precision": "house",
"confidence": 0.97,
"place_id": "def456",
"components": {"postcode": "20500", "city": "Washington", "region": "DC", "country": "US"}
}
]
}すべての住所がここまで揃っているわけではありません。「Springfield, Illinois」のように都市と地域だけのクエリでも結果は返りますが、componentsの郵便番号は1つの建物ではなく都市全体を対象としたものになり、precisionフィールドは「house」よりも粗い値になります。返された郵便番号を地域的な見積もりに使うだけでなく配送ラベルに印刷するつもりなら、この違いは重要です。都市レベルの郵便番号は、建物レベルの郵便番号と同じ保証にはならないからです。
返された郵便番号を信頼できるものとして扱う前に、precisionとconfidenceのフィールドを確認してください。precisionが「house」で信頼度スコアが高ければ、郵便番号の値をそのまま信頼できるほど具体的に一致したことを意味します。通りレベルや都市レベルの一致のように精度が粗い場合、郵便番号はより広い範囲を対象としており、顧客が意図した正確な住所と一致しない可能性があります。
これは1回の検索で、1つの住所につき1日の無料枠から1件のリクエストが消費されます。郵便番号なしで届いたチェックアウトや新規登録フォームの送信ごとにこれを行うのは通常の使い方であり、キーがあれば毎日含まれる、あるいはキーなしで1つのIPアドレスから利用できる1日2,500件の無料リクエストに近づくことはまずありません。
results配列が空の場合や、信頼度スコアの低い結果が返された場合は、住所があいまいすぎて解決できなかったことを意味します。その場合は推測せず、顧客に直接郵便番号を尋ねてください。配送ラベルに誤った郵便番号が書かれているほうが、空欄よりも多くの問題を引き起こすからです。
国によっては郵便番号をまったく使わないか、使い方があまりにも一貫していないため、ある結果のcomponentsオブジェクトにそのフィールドが含まれないことがあります。郵便番号のフィールドがないこと自体をエラーとして扱わないでください。まずcomponentsオブジェクトの国を確認し、その国が通常は郵便番号があるはずの国である場合にのみ、その行に確認用のフラグを付けてください。
郵便番号の候補が得られたら、その郵便番号とcomponentsオブジェクトの国を指定して/v1/postcodeを直接呼び出すと、独立してすばやく再確認できます。これは、元のジオコーディングの信頼度が明らかに高いか低いかではなく、ぎりぎりだった場合に特に役立ちます。
このように欠けている郵便番号を補えば、フォームの入力欄が1つ減り、顧客とのやり取りも1往復省けます。フィールドの完全な定義は、郵便番号検索のドキュメントとジオコーディングのドキュメントにあります。