我正在使用Google地图,希望能够检测用户是否在标记(放置在地图上)的半径内,使用用户当前位置。我有用户当前位置的坐标(纬度和经度)和标记的坐标,但不知道如何计算用户是否在该区域内。下面的图片可能最好描述了我想做的事情。
我有一个类似这样的算法:
map.OnInfoWindowClickListener(new OnInfoWindowClickListener()){
public void isUserInArea(Marker marker){
float[] distance = new float[2];
//users current location
Location.distanceBetween(currentLocation.getLatitude(),currentLocatiocation.getLongitude(),
marker.getPosition().latitude, marker.getPosition().longitude, distance);
}
由于我无法获得标记圆的位置,因此无法确定当前位置是否在标记区域内。然而,这是我所能做到的最接近的方式。希望能得到帮助。
为了帮助您,我会像这样向地图添加一个圆形:
// adding circle to map
circleOptions = new CircleOptions();
circleOptions.center(new LatLng(locationlist.get(i)
.getLatitude(), locationlist.get(i).getLongitude()));
circleOptions.radius(20);
circleOptions.strokeColor(Color.BLUE);
circleOptions.fillColor(Color.BLUE);
map.addCircle(circleOptions);
//check that all tasks are in circle radius
Marker locationMarker = map.addMarker(markerOp);
locationMarker.showInfoWindow();