Fixed MapImageLayer boundingBox

This commit is contained in:
ClemensF 2017-11-02 19:05:46 +01:00
parent 156ebfe177
commit 1861e9ca5d
2 changed files with 28 additions and 30 deletions

View file

@ -223,9 +223,11 @@ namespace MapControl
{ {
updateInProgress = true; updateInProgress = true;
UpdateBoundingBox();
ImageSource imageSource = null; ImageSource imageSource = null;
if (UpdateBoundingBox()) if (boundingBox != null)
{ {
try try
{ {
@ -243,7 +245,7 @@ namespace MapControl
} }
} }
private bool UpdateBoundingBox() private void UpdateBoundingBox()
{ {
var width = ParentMap.RenderSize.Width * RelativeImageSize; var width = ParentMap.RenderSize.Width * RelativeImageSize;
var height = ParentMap.RenderSize.Height * RelativeImageSize; var height = ParentMap.RenderSize.Height * RelativeImageSize;
@ -253,39 +255,35 @@ namespace MapControl
boundingBox = ParentMap.MapProjection.ViewportRectToBoundingBox(rect); boundingBox = ParentMap.MapProjection.ViewportRectToBoundingBox(rect);
if (boundingBox == null || !boundingBox.HasValidBounds) if (boundingBox != null && boundingBox.HasValidBounds)
{ {
return false; if (!double.IsNaN(MinLatitude) && boundingBox.South < MinLatitude)
} {
boundingBox.South = MinLatitude;
}
if (!double.IsNaN(MinLatitude) && boundingBox.South < MinLatitude) if (!double.IsNaN(MinLongitude) && boundingBox.West < MinLongitude)
{ {
boundingBox.South = MinLatitude; boundingBox.West = MinLongitude;
} }
if (!double.IsNaN(MinLongitude) && boundingBox.West < MinLongitude) if (!double.IsNaN(MaxLatitude) && boundingBox.North > MaxLatitude)
{ {
boundingBox.West = MinLongitude; boundingBox.North = MaxLatitude;
} }
if (!double.IsNaN(MaxLatitude) && boundingBox.North > MaxLatitude) if (!double.IsNaN(MaxLongitude) && boundingBox.East > MaxLongitude)
{ {
boundingBox.North = MaxLatitude; boundingBox.East = MaxLongitude;
} }
if (!double.IsNaN(MaxLongitude) && boundingBox.East > MaxLongitude) if (!double.IsNaN(MaxBoundingBoxWidth) && boundingBox.Width > MaxBoundingBoxWidth)
{ {
boundingBox.East = MaxLongitude; var d = (boundingBox.Width - MaxBoundingBoxWidth) / 2d;
boundingBox.West += d;
boundingBox.East -= d;
}
} }
if (!double.IsNaN(MaxBoundingBoxWidth) && boundingBox.Width > MaxBoundingBoxWidth)
{
var d = (boundingBox.Width - MaxBoundingBoxWidth) / 2d;
boundingBox.West += d;
boundingBox.East -= d;
}
return true;
} }
private void AdjustBoundingBox(double longitudeOffset) private void AdjustBoundingBox(double longitudeOffset)

View file

@ -163,7 +163,7 @@ namespace MapControl
/// </summary> /// </summary>
public virtual string WmsQueryParameters(BoundingBox boundingBox, string version = "1.3.0") public virtual string WmsQueryParameters(BoundingBox boundingBox, string version = "1.3.0")
{ {
if (string.IsNullOrEmpty(CrsId)) if (string.IsNullOrEmpty(CrsId) || !boundingBox.HasValidBounds)
{ {
return null; return null;
} }