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:如何删除以前的圈子,但保留新的圈子?的主要内容,如果未能解决你的问题,请参考以下文章
(Google Maps Android Marker Clustering Utility)Fragment 暂停时不会删除集群项目
设置新航点后如何删除以前的折线... Google Map Android Studio
Android:使用 Google API 获取实时方向,还是与 Google Maps 通信?
如何使用 android-maps-utils 更改单击的标记图标?
点击按钮时谷歌地图崩溃。 (无效 com.google.maps.api.android.lib6.impl.bp.v())