如何在android中使用geofire查询来统计用户半径内的标记?

How to count markers within the user radius using geofire query in android?

这是我的代码,我将标记添加到半径内的位置

GeoQuery geoQuery = geoFire.queryAtLocation( new GeoLocation( latitude, longitude ), 1 );

HashMap<String, Marker> markers = new HashMap<>();

geoQuery.addGeoQueryEventListener( new GeoQueryEventListener() {
    @Override
    public void onKeyEntered(String key, GeoLocation location) {
        countCrime++;

        if (isAttachedToActivity()) {

            //get string icon using filename
            int resourceID = getResources().getIdentifier(
                    data.getIcon(), "drawable",
                    getActivity().getPackageName() );

            //bitmapDescriptor for marker using filename
            BitmapDescriptor crime_icon = BitmapDescriptorFactory.fromResource( resourceID );

            LatLng latLng = new LatLng( latitude, longitude );

            Marker marker = mGoogleMap.addMarker( new MarkerOptions().position( latLng )
                    .icon( crime_icon ) );
            markers.put( key, marker );
            
            marker.setTag( details );
        }
    }
}

这是输出:

我要统计半径内的标记

计算地理查询中键的最简单方法是保留一个计数器变量并在每次调用 is called. Then when 时增加它以指示已加载所有键,你知道有多少。

在代码中:

geoQuery.addGeoQueryEventListener( new GeoQueryEventListener() {
    int keyCount = 0; // 

    @Override
    public void onKeyEntered(String key, GeoLocation location) {
        keyCount++; // 

        ...
    }

    @Override
    public void onKeyExited(String key) {
        keyCount--; // 
    }

    @Override
    public void onGeoQueryReady() {
        System.out.println("There are now "+keyCount+" keys in range"); // 
    }
}