我已经能够使用给定中心点周围的纬度和经度值在我的地图上绘制一个椭圆。虽然我在地图上看到了一个形状,但我得到的是椭圆而不是圆形,我认为它与指定的距离不匹配。我打算用它来显示该圆圈内的对象(这将在稍后我可以正确显示圆圈后完成,这就是为什么我需要一个圆圈而不是椭圆,因为它应该是完美的圆形)。
我正在使用 Bing 地图 API。我希望从通过参数传入的中心以给定的英里(距离)绘制圆,参数中称为英里的另一个变量只是保持 1D 的双精度值。我认为问题与我的数学计算方式有关。有没有人知道如何改进此代码以更好地计算我的里程。
private void drawPoly(SearchLocation center, Double miles)
{
//amount of vertex
double vertexCount = 100D;
//used by the api to carried out searches
List<SearchLocation> vertices = new List<SearchLocation>();
double v = 0;
double radians = Math.PI / 180D;
double radiansPerDegree = Math.PI / 180D;
double degreePerVertex = 360D / vertexCount;
double radiansPerVertex = degreePerVertex * radiansPerDegree;
var centerOfMap = center;
const double degLatMiles = 68.68637156368D;
double degLonMiles = Math.Cos(center.Latitude.Value) * (68.68637156368D);
double milesLat = (miles * degLatMiles) / 3600;
double milesLon = (miles * degLonMiles) / 3600;
for (v = 0; v < vertexCount; v++)
{
radians = v * radiansPerVertex;
//adds the miles from the center point and draws a circle
double centrLat = center.Latitude.Value + (milesLat * Math.Sin(radians));
double centrLon = center.Longitude.Value + (milesLon * Math.Cos(radians));
vertices.Add(new SearchLocation() { Latitude = centrLat, Longitude = centrLon });
}