所有标记都显示在基于Firebase的数据纬度和经度的地图上。我想仅在圆内显示地图上的标记,距当前位置的圆半径为10公里。
这就是我显示Firebase中所有标记的方式
LatLng newlocation = new LatLng(dataSnapshot.child("latitude").getValue(Double.class),dataSnapshot.child("longitude").getValue(Double.class));
nama = new String(dataSnapshot.child("nama").getValue(String.class));
googleMap.addMarker(new MarkerOptions().position(newlocation).title(nama+"")));
这就是我在当前位置周围显示一个圆圈的方式:
LatLng latLng = new LatLng(latitude, longitude);
mMap.addCircle(new CircleOptions()
.center(latLng)
.radius(10000)
.strokeWidth(0f)
.fillColor(0x550000FF));
请问我更多细节!
最佳答案
使用此公式查找两个经纬度之间的距离,此函数将返回以米为单位的距离
double getDistance(double LAT1, double LONG1, double LAT2, double LONG2) {
double distance = 2 * 6371000 * Math.asin(Math.sqrt(Math.pow((Math.sin((LAT2 * (3.14159 / 180) - LAT1 * (3.14159 / 180)) / 2)), 2) + Math.cos(LAT2 * (3.14159 / 180)) * Math.cos(LAT1 * (3.14159 / 180)) * Math.sin(Math.pow(((LONG2 * (3.14159 / 180) - LONG1 * (3.14159 / 180)) / 2), 2))));
return distance;
}
您可以轻松实现与问题相关的逻辑部分