如何仅在地图上的半径(圆圈)内显示标记?

时间:2018-04-15 07:20:54

标签: java android google-maps firebase

所有标记都显示在地图上,基于来自firebase的数据纬度和经度。我想在圆圈内部的地图上显示标记,当前地方的圆半径为10公里。

这是我显示Firebase所有标记的方法

*args

这是我在当前位置周围显示一个圆圈的方式:

 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+"")));

请向我询问更多细节!

2 个答案:

答案 0 :(得分:1)

使用此公式查找两个纬度和经度之间的距离此函数将以米为单位返回距离

 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;
}

您可以轻松实现与您的问题相关的逻辑部分

答案 1 :(得分:0)

向地图添加标记时,将对象存储在数组中。然后使用computeDistanceBetween计算距离,使用setMap(null)隐藏标记。

var markers;
// adding...
var centerLatlng = new google.maps.LatLng(-25.363882,131.044922);

markers.each(function(){
    var distance = google.maps.geometry.spherical.computeDistanceBetween (this.getPosition(), centerLatLng);
    if(distance > 10000) {
        this.setMap(null);
    }
});