0
A
回答
0
这是我想要的东西。我没有写过这个班的个人,在这里的某个地方找到了,我不记得这个学分是X人!提供纬度和经度以及KM中的半径给出了一个边界框。 GMap在视口界限上做了些什么。
public class GlobalMercator
{
public class MapPoint
{
public double Longitude { get; set; } // In Degrees
public double Latitude { get; set; } // In Degrees
}
public class BoundingBox
{
public MapPoint MinPoint { get; set; }
public MapPoint MaxPoint { get; set; }
}
// Semi-axes of WGS-84 geoidal reference
private const double WGS84_a = 6378137.0; // Major semiaxis [m]
private const double WGS84_b = 6356752.3; // Minor semiaxis [m]
// 'halfSideInKm' is the half length of the bounding box you want in kilometers.
public static BoundingBox GetBoundingBox(MapPoint point, double halfSideInKm)
{
// Bounding box surrounding the point at given coordinates,
// assuming local approximation of Earth surface as a sphere
// of radius given by WGS84
var lat = Deg2rad(point.Latitude);
var lon = Deg2rad(point.Longitude);
var halfSide = 1000 * halfSideInKm;
// Radius of Earth at given latitude
var radius = WGS84EarthRadius(lat);
// Radius of the parallel at given latitude
var pradius = radius * Math.Cos(lat);
var latMin = lat - halfSide/radius;
var latMax = lat + halfSide/radius;
var lonMin = lon - halfSide/pradius;
var lonMax = lon + halfSide/pradius;
return new BoundingBox
{
MinPoint = new MapPoint { Latitude = Rad2deg(latMin), Longitude = Rad2deg(lonMin) },
MaxPoint = new MapPoint { Latitude = Rad2deg(latMax), Longitude = Rad2deg(lonMax) }
};
}
// degrees to radians
private static double Deg2rad(double degrees)
{
return Math.PI * degrees/180.0;
}
// radians to degrees
private static double Rad2deg(double radians)
{
return 180.0 * radians/Math.PI;
}
// Earth radius at a given latitude, according to the WGS-84 ellipsoid [m]
private static double WGS84EarthRadius(double lat)
{
// http://en.wikipedia.org/wiki/Earth_radius
var An = WGS84_a * WGS84_a * Math.Cos(lat);
var Bn = WGS84_b * WGS84_b * Math.Sin(lat);
var Ad = WGS84_a * Math.Cos(lat);
var Bd = WGS84_b * Math.Sin(lat);
return Math.Sqrt((An * An + Bn * Bn)/(Ad * Ad + Bd * Bd));
}
}
相关问题
- 1. 如何计算边界
- 2. 如何计算SciPy边界的微分?
- 3. 计算边界图像宽度与边界图像首先
- 4. 使用Javascript计算边界框
- 5. 如何获得没有边界线的地图?
- 6. 计算GDI +绘图的边界框
- 7. 计算OpenStreetMap的边界框
- 8. 如何计算iOS中的地理边界框?
- 9. Geofire如何计算Firebase查询的边界地理杂凑?
- 10. HTML:如何计算布局边界
- 11. OpenLayers如何计算边界框坐标?
- 12. 如何计算小部件边界?
- 13. 如何计算谷歌地图在java中的边界框的缩放级别
- 14. 计算凸包边界
- 15. 从边界计算区域
- 16. CGFont:计算字形边界
- 17. 计算谷歌地图瓦片边界坐标
- 18. 地图:如何删除省份边界
- 19. 如何在没有地图的情况下计算ETA
- 20. 在Opera计算的边界半径
- 21. 计算Tensorflow中的边界框重叠
- 22. 计算边界框的顶点
- 23. 计算相邻矩形的边界
- 24. 计算路径崩溃的边界
- 25. 如何使用BingMap计算地图四角(边缘)的坐标?
- 26. 如何计算地图上的多边形面积?
- 27. D3图表没有顶部边界
- 28. 如何获取谷歌地图的多边形边界?
- 29. 如何计算d3中一组点的传单的边界框
- 30. 设置地图边界
所有你需要的是数学,这是独立于语言。 –
是的,我知道,但你有一个数学的例子吗?请告知 –
只需查找循环中x,y的最小值和最大值。给你的边界矩形。不知道你的意思是“缩放级别16”。 –