在OSM中,我需要知道当前区域四个角的经度和纬度,就像OSM中的这张图片一样。
通过以下代码,我得到了控件的中心X和Y值
var centerX = TileLayer.ControlSize.Width / 2;
var centerY = TileLayer.ControlSize.Height / 2;
通过以下方法,我将中心像素值转换为纬度, 经度。
private PointF GetPanChangedArguments(double pointX, double pointY)
{
PointF pointXY = new PointF();
foreach (var tile in TileLayer.Tiles)
{
if (tile.ImageBounds != null && tile.ImageBounds.Contains((int)pointX, (int)pointY))
{
var actualXPoint = (pointX - tile.ImageBounds.Left);
var actualYPoint = (pointY - tile.ImageBounds.Top);
var tileSize3 = ((1 << (TileLayer.Scale - tile.Scale)) * 256);
tileSize3 = (int)(tileSize3 * SfMaps.DENSITY);
var point = TileLayer.PointToLatLon(actualXPoint + tile.X * tileSize3, actualYPoint + tile.Y * tileSize3, TileLayer.Scale);
pointXY = new PointF(point.X, point.Y);
break;
}
}
return pointXY;
}
现在,我需要左上角的经度和纬度,我曾经使用此方法传递了0,0,但是图像边界未针对比例值1.1、1,2..etc更新,因此边界值已更新仅适用于比例值2。
如何更新图块的当前边界以及如何获取左上角的坐标。或者是找到OSM topleftcorner
坐标的任何其他方式