繁体   English   中英

如何在Windows Phone 7的bing映射中从ViewModel设置经度和纬度

[英]How to set the longitude and latitude from ViewModel in bing maps in windows phone 7

我想从ViewModel中给出经度和纬度。

现在我使用像:

 private void button1_Click(object sender, RoutedEventArgs e)
    {
        Pushpin p = new Pushpin();
        p.Background = new SolidColorBrush(Colors.Yellow);
        p.Foreground = new SolidColorBrush(Colors.Black);
        p.Location = new GeoCoordinate(double.Parse(longitude.Text), double.Parse(latitude.Text));//Longitude and Latitude
        p.Content = "I'm here";//To show the place where it is located
        map1.Children.Add(p);
        map1.SetView(new GeoCoordinate(double.Parse(longitude.Text), double.Parse(latitude.Text), 200), 9);
    }

我的Xaml是:-

  <Grid x:Name="MapPageUIContainer" Grid.Row="1" Margin="2,0,2,0">
        <my:Map CopyrightVisibility="Collapsed" LogoVisibility="Collapsed" CredentialsProvider=""  Mode="AerialWithLabels" Height="543" HorizontalAlignment="Left" Name="map1" VerticalAlignment="Top" Width="480" Margin="2,100,0,0"  />
        <Border BorderBrush="Silver" BorderThickness="1" Height="100" HorizontalAlignment="Left" Margin="0,0,0,0" Name="border1" VerticalAlignment="Top" Width="476" Background="#FFA3A371">
            <TextBlock Text="Map Example" HorizontalAlignment="Center" FontSize="32" FontWeight="Bold" VerticalAlignment="Center" />
        </Border>
        <TextBox Height="72" HorizontalAlignment="Left" Margin="6,627,0,0" Name="longitude" Text="" VerticalAlignment="Top" Width="200" />
        <TextBox Height="72" HorizontalAlignment="Left" Margin="260,627,0,0" Name="latitude" Text="" VerticalAlignment="Top" Width="200" />
        <Button Content="Set" HorizontalAlignment="Left" Margin="190,690,0,0" Name="button1" VerticalAlignment="Top" Click="button1_Click" />
    </Grid>

在这里,我想从视图模型中给出图钉,经度,纬度。 请让我知道如何实现此目标?

提前致谢..

我有这样的尝试。

public class MapPageViewModel : ReactiveObject
{

    public static string _longitude;
    public string longitude
    {
        get { return _longitude; }
        set { this.RaiseAndSetIfChanged(x => x.longitude, value); }
    }

    public static string _latitude;
    public string latitude
    {
        get { return _latitude; }
        set { this.RaiseAndSetIfChanged(x => x.latitude, value); }
    }

    public ReactiveAsyncCommand setButton { get; set; }

    public MapPageViewModel()
    {
        setButton = new ReactiveAsyncCommand();
        setButton.Subscribe(x => {

            Pushpin p = new Pushpin();
            p.Background = new SolidColorBrush(Colors.Yellow);
            p.Foreground = new SolidColorBrush(Colors.Black);
            p.Location = new GeoCoordinate(double.Parse(longitude), double.Parse(latitude));
            p.Content = "I'm here";//To show the place where it is located
            //map1.Children.Add(p);
            //map1.SetView(new GeoCoordinate(double.Parse(longitude), double.Parse(latitude), 200), 9);
        });
    }


}

但是我不知道如何设置map1.Children.Add()和map1.SetView以及如何在Map中绑定这些值?

嗨克莱门斯。 我已经尝试过您的指示。 但是显示错误。

错误消息的屏幕截图

而且我也尝试过这个:-

public MapPageViewModel()
    {
        PushpinItems = new ObservableCollection<PushpinItem>();
        PushpinItem pp = new PushpinItem();
        setButton = new ReactiveAsyncCommand();
        setButton.Subscribe(x => {
            pp.Location = new GeoCoordinate(double.Parse(longitude), double.Parse(latitude));
            pp.Text = "I'm here";
            PushpinItems.Add(pp);
        });
    }

但是这里发生了运行时错误。 请让我知道我在哪里弄错了。

在适当的MVVM方法中,通常会具有一个MapItemsControl和图钉的ItemTemplate ,并将其绑定到视图模型中的图钉数据项的ObservableCollection

public class PushpinItem
{
    public GeoCoordinate Location { get; set; }
    public string Text { get; set; }
}

public class MapPageViewModel : ReactiveObject
{
    public ObservableCollection<PushpinItem> PushpinItems { get; set; }
    ...

    public MapPageViewModel()
    {
        PushpinItems = new ObservableCollection<PushpinItem>();
        setButton = new ReactiveAsyncCommand();

        setButton.Subscribe(x =>
        {
            PushpinItems.Add(new PushpinItem
            {
                Location = new GeoCoordinate(...),
                Text = ...
            });
        });
    }
}

XAML:

<map:Map ...>
    <map:MapItemsControl ItemsSource="{Binding PushpinItems}">
        <map:MapItemsControl.ItemTemplate>
            <DataTemplate>
                <map:Pushpin Location="{Binding Location}" Content="{Binding Text}"
                             Background="Yellow" Foreground="Black"/>
            </DataTemplate>
        </map:MapItemsControl.ItemTemplate>
    </map:MapItemsControl>
</map:Map>

SetView从ViewModel @Clemens和此链接对我非常有帮助.. !! 谢谢他们两个.. !!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM