この図を参照してください。
私が知りたいのは:
Javaまたは特にAndroid for Google Maps API V2の場合)のコード例を教えていただければ幸いです
基本的に必要なのは、マップ上の2点間の距離です。
float[] results = new float[1];
Location.distanceBetween(centerLatitude, centerLongitude, testLatitude, testLongitude, results);
float distanceInMeters = results[0];
boolean isWithin10km = distanceInMeters < 10000;
Location
オブジェクトがすでにある場合:
Location center;
Location test;
float distanceInMeters = center.distanceTo(test);
boolean isWithin10km = distanceInMeters < 10000;
使用されているAPIの興味深い部分を次に示します。 https://developer.Android.com/reference/Android/location/Location.html
新しい GeoFencing API を体験しましたか?それはあなたを助けるはずです。通常の実装には時間がかかります。 これ を使用すると、簡単に実装できます。
https://developer.Android.com/reference/Android/location/Location.html を参照してください
Location areaOfIinterest = new Location;
Location currentPosition = new Location;
areaOfIinterest.setLatitude(aoiLat);
areaOfIinterest.setLongitude(aoiLong);
currentPosition.setLatitude(myLat);
currentPosition.setLongitude(myLong);
float dist = areaOfIinterest.distanceTo(currentPosition);
return (dist < 10000);
これをチェックして:
private boolean isMarkerOutsideCircle(LatLng centerLatLng, LatLng draggedLatLng, double radius) {
float[] distances = new float[1];
Location.distanceBetween(centerLatLng.latitude,
centerLatLng.longitude,
draggedLatLng.latitude,
draggedLatLng.longitude, distances);
return radius < distances[0];
}
「エリアを作成する方法」という意味で、マップ上にエリアを描画したい場合は、マップV2リファレンス クラスCircleのドキュメント に例があります。
円の中心と点の間の距離が10 kmを超えているかどうかを確認するには、静的メソッド Location.distanceBetween(...) を使用することをお勧めします。これにより、不要なオブジェクトの作成が回避されます。
領域が円ではなく多角形である場合のコード例については、 ここ (回答の最後)も参照してください。