古事連記帖

趣味のこと、技術的なこと、適当につらつら書きます。

UWP で MapControl の任意の場所を適切にズームしたい

よくある「ある地点からある地点までを指し示した地図」を出したいとき、ZoomLevel をどの値にすれば良いかわからなくなるときがありますが、UWP の MapControl でも同じようなことができました。


使うのは GeoboundingBox というクラスです。これに位置情報を BasicGeoposition の列挙として渡すと、自動で北東・南西・中心の位置を計算してくれます。
さらに、これを MapControl の TrySetViewBoundsAsync メソッドに渡すことで、適切な位置に、適切にズームしてくれるようになります。

以下は使用しているコードです。わかりやすいように始点・終点と線を描くようにしています。
gist.github.com

上記のように書くと、こんな表示になります。
f:id:ChiiAyano:20180305231626p:plain

TrySetViewBoundsAsync は、マップのロードが終わったタイミングで呼び出さないと失敗します。それだけはご注意を。