プログラムの事とか

お約束ですが「掲載内容は私個人の見解です」

Microsoft.Maps.MapControl.WPF の残念なうごき

Microsoft.Maps.MapControl.WPFはNuGetで入れることができるWPF用の地図コントロールです

Bing Maps WPF Control

ベースとなる地図がBing MapsになっているだけのよくあるTMS(?)のコントロールで最新版は1.0.0.3(2015/02/19)となっています

このコントロールMapCore.BoundingRectangleプロパティを参照することで現在表示している領域の東西南北が取得できます

ということで地図が移動した時の西と東の度を画面上に表示するだけのアプリを作ってみました(わかると思いますが西を左側、東を右側にだしてます)

f:id:puni-o:20171109142740g:plain

東が180°を超えた瞬間に西と東が入れ替わります

BoundingRectangleプロパティが返すLocationRectクラスがWestとEastをイイ感じ(?)に入れ替えてくれるのが原因なんですが、どう見てもバグです、すごく困ります

LocationRectクラスはどうやら

  • West < East
  • 緯度は±180の中にある

を保証しようとしているためにこんなことになっているようです (これだと経度180度線が入った領域は表現できませんよね)

Microsoft.Maps.MapControl.WPFの中ではLocationRectを使う箇所がいくつかあるんですが、上の値チェックはクラスに側が保証していることを前提にできていたりするので、ちょっと修正とかできないんだろうなーとは思うんですがどうなんでしょう

そもそもバグ報告をどこにしていいのかも分からないし、とっくにサポートおわってんじゃないかとか思っていたり

ちなみにUWP版にはこのプロパティはありません