2016-11-06 3 views
2

ハードコードされたオフセット値を、nordのオフセットオフセットと矢印を回転させたい度合いを渡すことができる関数に置き換えることによって、ポリゴン(この矢印など)を回転させたいとします。long/lat座標のマップ上でポリゴンを回転するにはどうすればよいですか?

私はRotation matrixを使用しようとしましたが、うまくいきませんでした。
おそらく距離が の1 Lat。 != 1ロング。

私はこれで何をしようとしているのですか:
矢印は車両を表し、車両が向いている方向に回転している必要があります。

double centerLatitude = pos.Coordinate.Point.Position.Latitude; 
double centerLongitude = pos.Coordinate.Point.Position.Longitude; 

MapPolygon mapPolygon = new MapPolygon(); 
mapPolygon.Path = new Geopath(new List<BasicGeoposition>() { 
    new BasicGeoposition() {Longitude=centerLongitude, Latitude=centerLatitude},//top of the arrow 
    new BasicGeoposition() {Longitude=centerLongitude-0.001, Latitude=centerLatitude-0.0010}, 
    new BasicGeoposition() {Longitude=centerLongitude-0.001, Latitude=centerLatitude-0.0030}, 
    new BasicGeoposition() {Longitude=centerLongitude+0.001, Latitude=centerLatitude-0.0030}, 
    new BasicGeoposition() {Longitude=centerLongitude+0.001, Latitude=centerLatitude-0.0010},    
}); 
mapPolygon.ZIndex = 1; 
mapPolygon.FillColor = Colors.Orange; 
mapPolygon.StrokeColor = Colors.Blue; 
mapPolygon.StrokeThickness = 2; 
mapPolygon.StrokeDashed = false; 
MainMap.MapElements.Add(mapPolygon); 

enter image description here

+0

正確な答えではありませんが、おそらくそれが役立ちます。問題の変形として、行末に矢印の帽子を描く方法があります。 Lat/LonはX/Yになり、ポリゴンは矢頭になります。 math.stackexchange(http://math.stackexchange.com/questions/1314006/drawing-an-arrow)に素晴らしい記事が掲載されているかもしれません。 – MBulli

+0

mapPolygonの代わりにxamlコントロールを使用することを検討しましたか?例えば。矢印付きの画像制御では、はるかに簡単です。 –

+0

マップアイコンを使用しようとしましたが、マップを回転させたくありません。 – MatMis

答えて

2

MapPolygonsは、地図上の座標にバインドされています。 UWPの回転変換はMapPolygonには適用されません。 MapPolygonを回転させたい場合は、回転した座標を計算する必要があります。 Bing Maps V8マップコントロール(Web)はこれを行うための機能を提供します。

空間的に正確(投影をマッピングによる同じに見えないかもしれない)

ピクセル(あなたがそれを回転させると同じように見えますが、空間的に正確ではありません)

  • はポリゴンの中心を計算し、周りのポリゴンを回転させるためのアンカーポイントとしてこれを使用。あなたが望むなら、ポリゴンの他の部分を使うことができます。 19.
  • は回転ピクセル座標計算ズームレベルで座標MapPolygonの各位置を通してhttps://msdn.microsoft.com/en-us/library/bb259689.aspx(LatLongToPixelXY)
  • ループと、それは グローバルピクセルの計算:http://homepages.inf.ed.ac.uk/rbf/HIPR2/rotate.htm
  • これは、ズームレベル19でのグローバル座標の画素に変換します
  • ズームレベル19でピクセル座標を空間位置に戻します(PixelXyToLatLong)
  • MapPolygonに新しく計算された位置を渡します。
0

あなたが試みているものの最良の方法は、XAML要素を使用してマップコントロールに子要素として追加することです。 XAMLを一点(矢印の頭または中央)にマップに固定することができます。 フレームごとにポリゴンを更新しようとすると、非常に速く滑らかではありませんので、マップポリゴンを使用したくありません。 上記のリンクのいくつかは、マップが常にメルカトル投影法であり、北向きで傾いていないと仮定しています。これはUWPマップでは必ずしも真実ではありません。

+0

あなたは、(リンク先の)例をお願いしますか? – MatMis

+0

このページの「XAMLの追加」の例を参照してください –

+0

https://msdn.microsoft.com/en-us/windows/uwp/maps-and-location/display-poi –

関連する問題