Как установить значения GeoCoordinate lat + lng динамически - PullRequest
1 голос
/ 01 августа 2011

Я пытаюсь установить значения широты / долготы для элемента, помеченного "<device:GeoCoordinate...", динамически.Я могу жестко запрограммировать это в XAML без проблем, но когда я пытаюсь установить его на лету, я получаю исключение нулевого указателя (внутри загруженного обработчика, показанного ниже)

XAML

<maps:Map ZoomLevel="6" Mode="Aerial" Grid.Row="1" Grid.ColumnSpan="2">
        <maps:Map.Center>
            <device:GeoCoordinate x:Name="theLocation"/>
        </maps:Map.Center>
        <maps:MapLayer x:Name="TheMapLayer"/>
    </maps:Map>

c #

    void ViewBingMaps_Loaded(object sender, RoutedEventArgs e)
    {
        //get lat + lng for the device and set it dynamically
        theLocation.Latitude = 41.5686949;
        theLocation.Longitude = -93.7943157;
    }

Можно ли установить это или я неправильно понимаю устройство: назначение GeoCoordinate?

Ответы [ 2 ]

1 голос
/ 01 августа 2011

Просто создайте экземпляр класса GeoCoordinate в коде и установите центр карты в него:

theLocation = new System.Device.Location.GeoCoordinate(10.0, 10.0);
map1.Center = theLocation;
0 голосов
/ 01 августа 2011

Или, альтернативно, используйте подход MVVM:

<maps:Map Center="{Binding Center}">
    ...
</maps:Map>

, который затем связывается со свойством GeoCoordinate с именем Center.

public GeoCoordinate Center
{
    get;
    private set;
}

. Затем его можно динамически изменить сваша ViewModel (у вас do есть ViewModel, верно?!)

Точно так же вы можете связать ZoomProperty (который, как правило, довольно удобен) и почти все остальное!

...