Is there a way to prevent scrolling outside the northern and southern map extents, short of snapping back in the OnCurrentExtentChanged event. See the image which is from your cloud sample page. This is the code I am using to get it to recenter, but it of course snaps back and is a bit distracting.
// Prevent infinite north/south panning by clamping the visible extent in the map’s native unit.
var extentCenter = e.CurrentExtent.GetCenterPoint();
var maxCenterY = _settings.ActiveMapView.MapUnit == GeographyUnit.Meter
? _mapGeoUtilities.ConvertPointToMeters(new PointShape(0d, MapConstants.MaxWebMercatorLatitude)).Y
: MapConstants.MaxWebMercatorLatitude;
var halfExtentHeight = e.CurrentExtent.Height / 2d;
var minAllowedCenterY = -maxCenterY + halfExtentHeight;
var maxAllowedCenterY = maxCenterY - halfExtentHeight;
var clampedCenterY = minAllowedCenterY > maxAllowedCenterY
? 0d
: Math.Clamp(extentCenter.Y, minAllowedCenterY, maxAllowedCenterY);
if (Math.Abs(extentCenter.Y - clampedCenterY) > 1e-6)
{
await _settings.ActiveMapView.ZoomToCenterAsync(
_settings.ActiveMapClass.MapZoomLevel,
new PointShape(extentCenter.X, clampedCenterY));
return;
}
Thanks,
James R.
