我创建了一个使用 Maps SDK for Android
.
当活动第一次初始化时,我计算一些初始圆边界,然后移动相机,使整个圆都在边界内。我使用以下代码加载它:
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
geoFire.getLocation( UID, new com.firebase.geofire.LocationCallback() {
@Override
public void onLocationResult(String key, GeoLocation location) {
if (location != null) {
currLat = location.latitude;
currLon = location.longitude;
LatLng myLocation = new LatLng( currLat, currLon );
circle = mMap.addCircle( new CircleOptions()
.center( myLocation )
.radius( AppConstants.INITIAL_RADIUS )
.strokeWidth( 0 )
.fillColor( getResources().getColor( R.color.colorLightPurpleOpac ) ) );
mMap.getUiSettings().setMapToolbarEnabled( false );
mMap.getUiSettings().setTiltGesturesEnabled( false );
mMap.getUiSettings().setRotateGesturesEnabled( false );
mMap.addMarker( new MarkerOptions().position( myLocation ).title( "I'm here" ) );
mMap.moveCamera( CameraUpdateFactory.newLatLngZoom( circleBounds( myLocation, (double) AppConstants.INITIAL_RADIUS / 1000 ).getCenter(), 10 ) );
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
} );
}
private LatLngBounds circleBounds(LatLng center, double radius) {
double deltaLat = Math.toDegrees( radius / AppConstants.EARTH_RADIUS );
double deltaLng = Math.toDegrees( radius / AppConstants.EARTH_RADIUS / Math.cos( Math.toRadians( center.latitude ) ) );
return new LatLngBounds( new LatLng( center.latitude - deltaLat, center.longitude - deltaLng ), new LatLng( center.latitude + deltaLat, center.longitude + deltaLng ) );
}
现在,在同样的活动中,有一个 seekBar
. 目的 seekBar
是更改绘制的圆的半径。
我使用以下方法更新Map中的圆:
SeekBar.OnSeekBarChangeListener seekBarChangeListener = new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
int progress = seekBar.getProgress();
circle.remove();
circle = mMap.addCircle( new CircleOptions()
.center( new LatLng( currLat, currLon ) )
.radius( progress * 1000 )
.strokeWidth( 0 )
.fillColor( getResources().getColor( R.color.colorLightPurpleOpac ) ) );
mapFragment.getMapAsync( googleMap -> mMap.moveCamera( CameraUpdateFactory.newLatLngZoom( circleBounds( new LatLng( currLat, currLon ), (double) progress ).getCenter(), 10 ) ) );
}
};
现在所发生的是,新的圆被正确绘制,它改变了它的尺寸,但是Map不会改变它的边界来适应新的圆。
有什么方法可以“更新”缩放以适应新的圆吗?
谢谢您
暂无答案!
目前还没有任何答案,快来回答吧!