2

ということで、地図を持ってきました。その上に、地理位置情報によって配置されたいくつかの XAML 要素があります。それらが互いに重なったときを検出するために、それらの座標をピクセル単位で見つける必要があります(グループ化の目的で)方法が見つからないようです。取得した場合MyMap.MapItems、マップにバインドしたオブジェクトのコレクションのみを取得します。それを行う方法はありますか?

4

2 に答える 2

1

良い質問。私は現在、そのような問題を抱えていました。これは、あなたが何をする必要があるかを正確に説明する記事です。https://msdn.microsoft.com/en-us/library/bb259689.aspx?f=255&MSPPError=-2147217396

コードを読む時間がない場合は、次のコードを参照してください。

    private const double EarthRadius = 6378137;
    private const double MinLatitude = -85.05112878;
    private const double MaxLatitude = 85.05112878;
    private const double MinLongitude = -180;
    private const double MaxLongitude = 180;

private static double Clip(double n, double minValue, double maxValue)
            {
                return Math.Min(Math.Max(n, minValue), maxValue);
            }

public static uint MapSize(int levelOfDetail)
        {
            return (uint) 256 << levelOfDetail;
        }
public static void LatLongToPixelXY(double latitude, double longitude, int levelOfDetail, out int pixelX, out int pixelY)
        {
            latitude = Clip(latitude, MinLatitude, MaxLatitude);
            longitude = Clip(longitude, MinLongitude, MaxLongitude);

            double x = (longitude + 180) / 360; 
            double sinLatitude = Math.Sin(latitude * Math.PI / 180);
            double y = 0.5 - Math.Log((1 + sinLatitude) / (1 - sinLatitude)) / (4 * Math.PI);

            uint mapSize = MapSize(levelOfDetail);
            pixelX = (int) Clip(x * mapSize + 0.5, 0, mapSize - 1);
            pixelY = (int) Clip(y * mapSize + 0.5, 0, mapSize - 1);
        }
于 2016-08-26T07:02:20.457 に答える
1

GetOffsetFromLocationメソッドの @Clemens の提案を使用しないのはなぜですか?

これはすべての計算を自動的に行い、MapControl がメルカトル図法から離れた場合でも機能します。

于 2016-09-08T06:42:47.873 に答える