Android Maps:如何删除以前的圈子,但保留新的圈子?
Posted
技术标签:
【中文标题】Android Maps:如何删除以前的圈子,但保留新的圈子?【英文标题】:Android Maps: how to remove previous circle, but keep new one? 【发布时间】:2020-04-06 01:40:33 【问题描述】:所以我想要一个围绕用户当前位置的圈子,但是现在每次我移动一个新圈子时都会创建一个新圈子,但旧圈子仍然存在。这会在地图上造成很大的混乱。
LocationRequest locationRequest = LocationRequest.create();
locationRequest.setInterval(2000);
locationRequest.setFastestInterval(1000);
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationCallback = new LocationCallback()
@Override
public void onLocationResult(LocationResult locationResult)
super.onLocationResult(locationResult);
if (locationResult == null)
return;
mLastKnownLocation = locationResult.getLastLocation();
checkLocation = mLastKnownLocation;
LatLng lastKnownLatLng = new LatLng(mLastKnownLocation.getLatitude(), mLastKnownLocation.getLongitude());
Circle mapCircle = mMap.addCircle(new CircleOptions()
.center(new LatLng(mLastKnownLocation.getLatitude(),mLastKnownLocation.getLongitude()))
.radius(20)
.strokeColor(Color.argb(200,0,64,122))
.strokeWidth(5)
.fillColor(Color.argb(100,82,189,236)));
mapCircle.setCenter(new LatLng(mLastKnownLocation.getLatitude(),mLastKnownLocation.getLongitude()));
HERE I CALCULATE SOME OTHER STUFF
// mFusedLocationProviderClient.removeLocationUpdates(locationCallback);
;
mFusedLocationProviderClient.requestLocationUpdates(locationRequest, locationCallback, null);
这就是我创建圆圈的方式。现在我尝试添加 mapCircle.remove() 但这导致根本没有得到一个圆圈。我怎样才能做到这一点。是的,我已经看过这个问题: Remove a circle from android Google Maps API v2 without clearing map 似乎并没有解决我的问题。
【问题讨论】:
你在哪里添加mapCircle.remove
?
在mapCircle.setCenter()
下,但不确定这是否是正确的地方
不要在每次位置更新时都创建一个新圈子;只需移动一个圆圈 - 只需处理没有圆圈的初始情况。
【参考方案1】:
您可以将本地 mapCircle
存储在 Activity 或 Fragment(您现在正在使用的那个)中,然后在添加新的之前将其删除
class MyActivity extends Activity
Circle mapCircle = null;
public someMethod()
// Inside location callback
locationCallback = new LocationCallback()
@Override
public void onLocationResult(LocationResult locationResult)
super.onLocationResult(locationResult);
if (locationResult == null)
return;
mLastKnownLocation = locationResult.getLastLocation();
checkLocation = mLastKnownLocation;
LatLng lastKnownLatLng = new LatLng(mLastKnownLocation.getLatitude(), mLastKnownLocation.getLongitude());
if (mapCircle != null)
mapCircle.remove();
mapCircle = mMap.addCircle(new CircleOptions()
.center(new LatLng(mLastKnownLocation.getLatitude(),mLastKnownLocation.getLongitude()))
.radius(20)
.strokeColor(Color.argb(200,0,64,122))
.strokeWidth(5)
.fillColor(Color.argb(100,82,189,236)));
mapCircle.setCenter(new LatLng(mLastKnownLocation.getLatitude(),mLastKnownLocation.getLongitude()));
【讨论】:
以上是关于Android Maps:如何删除以前的圈子,但保留新的圈子?的主要内容,如果未能解决你的问题,请参考以下文章