我已经有一段时间了。我在这里想要实现的是将谷歌地图作为背景图层添加到我的Sharpmap中,我能够实现这一点,但我现在面临的问题是我的地图总是居中到谷歌地图附近格陵兰海的一个点,就像它不会占用我的中心点坐标。
我正在使用Sharpmap 1.1和BruTile 0.7.4.4
到目前为止,我已经完成了以下工作。
SharpMap.Map _map = new SharpMap.Map();
SharpMap.Layers.VectorLayer layer = new SharpMap.Layers.VectorLayer("parcel");
SharpMap.Data.Providers.MsSqlSpatial DBlayer = new SharpMap.Data.Providers.MsSqlSpatial(_connectionString, "XXXXXX", "XXXX", "XXX");
layer.Style.Fill = new SolidBrush(Color.Transparent);
layer.Style.Outline = new Pen(Color.Black);
layer.Style.EnableOutline = true;
layer.MaxVisible = 13000;
layer.DataSource = DBlayer;
ProjNet.CoordinateSystems.Transformations.CoordinateTransformationFactory ctFact = new ProjNet.CoordinateSystems.Transformations.CoordinateTransformationFactory();
layer.CoordinateTransformation = ctFact.CreateFromCoordinateSystems(ProjNet.CoordinateSystems.GeographicCoordinateSystem.WGS84, ProjNet.CoordinateSystems.ProjectedCoordinateSystem.WebMercator);
layer.ReverseCoordinateTransformation = ctFact.CreateFromCoordinateSystems(ProjNet.CoordinateSystems.ProjectedCoordinateSystem.WebMercator, ProjNet.CoordinateSystems.GeographicCoordinateSystem.WGS84);
//SharpMap.Layers.TileLayer layerBackground = new TileLayer(new BingTileSource(BingRequest.UrlBing, "", BingMapType.Aerial), "TileLayer");
SharpMap.Layers.TileLayer layerBackground = new TileLayer(new GoogleTileSource(GoogleMapType.GoogleMap), "googlemaps");
_map.Layers.Add(layerBackground);
_map.Layers.Add(layer);
_map.BackColor = Color.White;
//-98.526890,29.411539
_map.Center = new GeoAPI.Geometries.Coordinate(0,0);
return _map;
即使我手动给Geo Coordinates它只是指向海中的同一个地方。
请参阅下面的Google地图地理位置,这是我的地图显示为中心的点。无论我做什么,每当我产生它时,它都将这一点显示为它的中心。
71.946088, -3.956171
任何帮助深表感谢。谢谢,干杯!
我发现谷歌地图图层没有居中的问题。原因是我使用QGIS将我的ESRI shapefile从WGS84(EPSG:4326)格式转换为Spherical Mercator(EPSG:900913)并更改了坐标格式但是
Google地图使用Google Maps Global Mercator(球形墨卡托)。
当我使用在线转换器来测试你可以找到here。当我给出结果坐标时,它很好。现在,我所要做的就是找到一种转换Google Maps Global Mercator(球形墨卡托)的方法。谢谢你的帮助@pauldendulk。