.net MauiMap的纬度和经度比例不同

v09wglhw  于 2023-03-20  发布在  .NET
关注(0)|答案(1)|浏览(129)

我正在使用MapScan类创建一个Maui Map -目前仅适用于Android:

  • Map跨度mapSpan =新建(中心位置,Map比例纬度,Map比例长度);*
  • Map.移动到区域(mapSpan);*

如果我创建了一个从中心等距点的圆,它看起来像一个椭圆。经度的投影看起来短得多。因此,我尝试了不同的缩放轴,但似乎没有工作。上面的代码在两个方向上平等地缩放Map。有什么提示吗?

7cwmlq89

7cwmlq891#

要在Maui Android的MapScan类中创建一个与中心距离相等的圆,请使用以下代码:

double radius = 100;
double lat = CenterLocation.Latitude;
double lng = CenterLocation.Longitude;
double d = radius / 3963.189;
for (double x = 0; x <= 360; x += 10) {
    double brng = Math.toRadians(x);
    double latRadians = Math.toRadians(lat);
    double lngRadians = Math.toRadians(lng);
    double lat2 = Math.asin(Math.sin(latRadians) * Math.cos(d) + Math.cos(latRadians) * Math.sin(d) * Math.cos(brng));
    double lng2 = lngRadians + Math.atan2(Math.sin(brng) * Math.sin(d) * Math.cos(latRadians), Math.cos(d) - Math.sin(latRadians) * Math.sin(lat2));
    lat2 = Math.toDegrees(lat2);
    lng2 = Math.toDegrees(lng2);
    // Add the point to the map
}

通过使用此代码,将从Map的中心生成一个由等距点组成的圆。通过更改radius变量的值,可以更改圆的半径。应输入Map的中心来代替CenterLocation变量。用最适合您的Map的类替换MapScan类。

相关问题