私はWPF用のBing Mapsコントロールを試しています。これが私を怒らせています。WPF Bing Mapsコントロール - スケールバーユニットを変更する
組み込みのスケールバーにアクセスする方法がわからないので、単位をメートル法に変更できます。
新しいスケールバー、コンパスなどを追加できますが、デフォルトのものにはアクセスできません。
誰でもこれを行う方法はありますか?
私はWPF用のBing Mapsコントロールを試しています。これが私を怒らせています。WPF Bing Mapsコントロール - スケールバーユニットを変更する
組み込みのスケールバーにアクセスする方法がわからないので、単位をメートル法に変更できます。
新しいスケールバー、コンパスなどを追加できますが、デフォルトのものにはアクセスできません。
誰でもこれを行う方法はありますか?
ここであなたはバディーになります。クレジットはインターネット上でFindVisualChildメソッドを投稿した人に送られます。
void SomeMethod()
{
var mapScale = FindVisualChild<Scale>(YourBingMapControl);
mapScale.DistanceUnit = DistanceUnit.KilometersMeters;
}
static TChildItem FindVisualChild<TChildItem>(DependencyObject obj) where TChildItem : DependencyObject
{
// Search immediate children first (breadth-first)
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(obj, i);
if (child != null && child is TChildItem)
return (TChildItem)child;
else
{
var childOfChild = FindVisualChild<TChildItem>(child);
if (childOfChild != null)
return childOfChild;
}
}
return null;
}
古い質問ですが、もっと簡単な方法があります。メトリックを使用する国にマップのCultureプロパティを設定するだけです。
例:
<m:Map
x:Name="MapObject"
CredentialsProvider="YOUR_KEY"
Center="-38.1231102,145.2116017"
ZoomLevel="11"
Mode="Aerial"
Culture="en-au"
/>