近くの座標から短縮 Plus Code を復元
短縮 Plus Code は対象地域をすでに把握している場合に便利ですが、その文字列だけでは場所を一意に特定できません。このツールは、短い Open Location Code と近くの基準緯度・経度を組み合わせ、欠けている接頭部を補います。復元した完全なコードに加え、符号化領域の中心座標、緯度および経度の境界を返します。計算は決定的で、地図検索を行わず、Open Location Code のセル選択規則に従います。
無料で実行
短縮 Plus Code に基準点が必要な理由
完全な Plus Code は、先頭に広い地域を示す文字を持ち、後ろに進むほど細かな位置を示します。短縮コードでは、コードをやり取りする方々が市区町村、近隣地区、目印などをすでに共有していることを前提として、広域を表す接頭部の一部を意図的に削除します。地域内の案内板やメッセージには、プラス記号の前に数文字しか記載されていない場合があります。残った文字が示す格子セルは世界各地で繰り返されるため、文字列だけでは候補を決められません。復元では、近くの基準緯度と経度を使って失われた地域情報を補います。まず基準座標を標準のペア精度で符号化し、短縮コードから省かれた数と同じだけ先頭文字を取得して、入力コードの前に結合します。次に、生成したセルの中心と基準点を比較します。この処理は住所、店舗、道路、行政区画を検索するものではありません。短縮文字列と基準座標の両方に適合する完全な Open Location Code のうち、地理的に最も近いものを復元します。したがって同じ地域内の基準点は必須情報であり、精度を少し高めるための任意のヒントではありません。
最も近い一致コードを選ぶ仕組み
通常は基準座標から接頭部を補うだけで十分ですが、格子セルの境界付近では追加の判定が必要です。仮の完全コードを、中心点と東西南北の境界を持つ長方形領域へ復号します。続いて、省略された接頭部が表す解像度を求め、仮の中心と基準点を比較します。中心がその解像度の半分を超えて離れている場合は、極点で緯度の範囲を越えないようにしながら、候補を基準点の方向へ同じ大きさのセル1個分移動します。経度は日付変更線をまたいで正規化されるため、180度の反対側にある近い点が遠方の結果を生むことはありません。確定したコードをもう一度復号し、明示的な境界と中心座標を添えて返します。これは短縮 Plus Code で想定されている「最も近い適合領域」の解釈に沿う方法です。ただし、中心が建物の入口であることや、セル内のすべての地点が同じ住所を持つことを保証するものではありません。境界は符号化された格子領域を示し、完全コードは保存したり別の Open Location Code 実装へ渡したりできる可搬性のある識別子です。
座標の選び方と結果の読み方
短縮コードが作成された場所に実際に近い座標をご使用ください。同じ地域内であれば、市街地の中心、既知の経由地点、現在の GPS 位置などを利用できます。短縮の度合いが大きいほど地理的な接頭部が多く失われ、近い基準点の重要性が増します。不正確な座標や遠い座標を使うと、残った文字には一致していても別の反復セルが選ばれる可能性があります。復元後は full_code と返された中心点の両方をご確認ください。latitude_lo、latitude_hi、longitude_lo、longitude_hi は結果が符号化する正確な長方形を示し、地図の表示範囲調整や包含判定に利用できます。再現性が必要な場合は、完全な結果が両方の入力から導かれるため、元の短縮コードと基準座標を監査記録に保存してください。入力は十進度で扱い、緯度は両極の間、経度は一般的な符号付き範囲内でなければなりません。この処理はネットワークサービス、地図データベース、現在時刻、無作為な選択を使用しません。そのため、同じ有効な入力からは、対話操作でも自動処理でも常に同じ復元コードと数値領域が得られ、API の料金は1回 $0.002 です。
活用例
地域内のメッセージで受け取ったコードを補完
近隣地区の短縮コードに既知の近い座標を組み合わせ、世界中で保存・共有できる形式にします。
現地調査記録を統一
短縮コードと調査時の基準座標を、明示的な復号境界を持つ完全な識別子へ変換します。
別システム向けのナビゲーションデータを準備
短縮 Plus Code に対応しないソフトウェアへ経由地点を出力する前に、可搬性のある完全コードを復元します。
よくある質問
短縮 Plus Code の復元には何が必要ですか?
短縮コードと、近くの緯度・経度を十進度で入力してください。省略された接頭部は地域情報を表すため、3つの値がすべて必要です。
基準座標はどの程度近い必要がありますか?
目的地と同じ地域内の座標をご使用ください。省略された文字が多いほど、実際に近い基準点を選ぶことが重要です。
住所や場所の名称も取得できますか?
取得できません。Open Location Code の計算だけを行い、地図、ジオコーダー、店舗一覧、郵便データベースは照会しません。
完全コードと一緒に境界を表示するのはなぜですか?
Plus Code は無限に精密な一点ではなく領域を表します。境界と中心点によって、その符号化された長方形を明確に確認できます。
すでに完全な Plus Code を入力できますか?
入力できません。この機能は短縮コード専用で、プラス記号が完全コードの位置にある入力は拒否します。
API リクエストの料金はいくらですか?
API は1回 $0.002 です。ブラウザー版はローカルで動作し、地図サービスへ計算内容を送信しません。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/geo/plus-code-recover \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"short_code":"9G8F+6X","latitude":47.36559,"longitude":8.524997}'const res = await fetch("https://api.kit.forhosting.com/geo/plus-code-recover", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"short_code": "9G8F+6X",
"latitude": 47.36559,
"longitude": 8.524997
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/plus-code-recover",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"short_code": "9G8F+6X",
"latitude": 47.36559,
"longitude": 8.524997
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/plus-code-recover", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"short_code":"9G8F+6X","latitude":47.36559,"longitude":8.524997}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"short_code":"9G8F+6X","latitude":47.36559,"longitude":8.524997}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/plus-code-recover", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"short_code": "9G8F+6X",
"latitude": 47.36559,
"longitude": 8.524997
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.plus_code_recover",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |