c#如何在经放大的地图中将经纬度转换为xy平面

时间:2019-05-04 09:15:58

标签: c# gps

我在图片框中有一张不是GOOGLE地图的地图。我知道地图的宽度和高度。而且我知道地图图像边缘的经度和纬度。地图图像仅显示了很小的区域(一些建筑物和街道),而不是整个世界。我想做的是,如果我有某点经纬度,则获取地图图像的xy坐标。该点将不会超出地图图像。

简而言之,如果我知道edge'lat&lon,主要任务就是将lat&lon转换为xy坐标。

1 个答案:

答案 0 :(得分:0)

// The mapping between latitude, longitude and pixels is defined by the web
// mercator projection.
function project(latLng) {
   var siny = Math.sin(latLng.lat() * Math.PI / 180);

   // Truncating to 0.9999 effectively limits latitude to 89.189. This is
   // about a third of a tile past the edge of the world tile.
   siny = Math.min(Math.max(siny, -0.9999), 0.9999);

   return new google.maps.Point(
      TILE_SIZE * (0.5 + latLng.lng() / 360),
      TILE_SIZE * (0.5 - Math.log((1 + siny) / (1 - siny)) / (4 * Math.PI)));
}

来自https://developers.google.com/maps/documentation/javascript/examples/map-coordinates?csw=1