google.maps.Circle によって作成されたサークル オーバーレイ内にある州を特定する方法はありますか? おそらくリバース ジオコーディングと getBounds または contains を使用していますか? Google はこれを行う方法を (ジオコーダまたはその他の方法を使用して) 提供していますか、それとも州の緯度と経度のデータベースを使用する必要がありますか?
1 に答える
Google Maps API 内でこれを行う簡単な方法はないようです。
円を近似getBounds()
するオブジェクトを取得するために使用できます。LatLngBounds
ただしgetBounds()
、円に近い長方形が返されるため、不正確な結果が得られる可能性があることに注意してください。より正確に行うには、Haversine 式のようなものを円の中心と半径と組み合わせて使用して、円を近似するための点の束を計算する必要があります。計算するポイントが多いほど、近似はより正確になります。
一連の境界点を取得しても、まだ森から抜け出しているわけではありません。Google の Geocoder API を使用してすべての州をLatLngBounds
. そのため、境界内でより多くのポイントを計算し、それらに対して個別の逆ジオコード リクエストを送信する必要があります。それでも、1 つまたは 2 つの状態を見逃す可能性があります。全体的に、うん。
別のアプローチは、私にはそれほど魅力的ではないようですが、誰が知っているか: 各州について、すべてを組み合わせると州の形状に近似する一連の長方形の境界の緯度/経度データを取得します。各州についてintersects()
、円と交差するかどうかを確認するために使用します。
ユースケースによっては、Google Maps API やその他のテクノロジーを含む他の可能性もあります。