@@ -354,17 +354,37 @@ public void onFetch(Bitmap bitmap) {
354
354
}
355
355
}
356
356
357
- private void setPokestopsMarkers (final Collection <Pokestop > pokestops ) {
357
+ private float getDistanceInMeters (double lat1 , double lon1 , double lat2 , double lon2 ) {
358
+
359
+ Location loc1 = new Location ("" );
360
+ loc1 .setLatitude (lat1 );
361
+ loc1 .setLongitude (lon1 );
362
+
363
+ Location loc2 = new Location ("" );
364
+ loc2 .setLatitude (lat2 );
365
+ loc2 .setLongitude (lon2 );
366
+
367
+ return loc1 .distanceTo (loc2 );
368
+ }
369
+
370
+ private void setPokestopsMarkers (final PokestopsEvent event ) {
358
371
if (mGoogleMap != null ) {
359
372
360
373
int markerSize = getResources ().getDimensionPixelSize (R .dimen .pokestop_marker );
374
+ Collection <Pokestop > pokestops = event .getPokestops ();
361
375
362
376
if (pokestops != null && mPref .getShowPokestops ()) {
363
377
Set <String > markerKeys = pokestopsList .keySet ();
364
378
365
379
for (final Pokestop pokestop : pokestops ) {
366
380
367
- if (!markerKeys .contains (pokestop .getId ())) {
381
+ // radial boxing
382
+ float distanceFromCenterInMeters = getDistanceInMeters (
383
+ event .getLatitude (), event .getLongitude (),
384
+ pokestop .getLatitude (), pokestop .getLongitude ()
385
+ );
386
+
387
+ if (!markerKeys .contains (pokestop .getId ()) && distanceFromCenterInMeters <= 370 ) {
368
388
369
389
RemoteImageLoader .load (
370
390
pokestop .hasLurePokemon () ? lurePokeStopImageUrl : pokeStopImageUrl ,
@@ -397,18 +417,25 @@ public void onFetch(Bitmap bitmap) {
397
417
}
398
418
}
399
419
400
- private void setGymsMarkers (final Collection < FortDataOuterClass . FortData > gyms ){
420
+ private void setGymsMarkers (final GymsEvent event ){
401
421
if (mGoogleMap != null ) {
402
422
403
423
int markerSize = getResources ().getDimensionPixelSize (R .dimen .gym_marker );
424
+ Collection <FortDataOuterClass .FortData > gyms = event .getGyms ();
404
425
405
426
if (gyms != null && mPref .getShowGyms ()) {
406
427
407
428
Set <String > markerKeys = gymsList .keySet ();
408
429
409
430
for (final FortDataOuterClass .FortData gym : gyms ) {
410
431
411
- if (!markerKeys .contains (gym .getId ())) {
432
+ // radial boxing
433
+ float distanceFromCenterInMeters = getDistanceInMeters (
434
+ event .getLatitude (), event .getLongitude (),
435
+ gym .getLatitude (), gym .getLongitude ()
436
+ );
437
+
438
+ if (!markerKeys .contains (gym .getId ()) && distanceFromCenterInMeters <= 370 ) {
412
439
413
440
RemoteImageLoader .load (
414
441
gymTeamImageUrls .get (gym .getOwnedByTeam ().getNumber ()),
@@ -552,7 +579,7 @@ public void onEvent(ClearMapEvent event) {
552
579
*/
553
580
@ Subscribe (threadMode = ThreadMode .MAIN )
554
581
public void onEvent (PokestopsEvent event ) {
555
- setPokestopsMarkers (event . getPokestops () );
582
+ setPokestopsMarkers (event );
556
583
}
557
584
558
585
/**
@@ -563,7 +590,7 @@ public void onEvent(PokestopsEvent event) {
563
590
@ Subscribe (threadMode = ThreadMode .MAIN )
564
591
public void onEvent (GymsEvent event ) {
565
592
566
- setGymsMarkers (event . getGyms () );
593
+ setGymsMarkers (event );
567
594
}
568
595
569
596
private void clearCatchedPokemonCircle () {
0 commit comments