Próbuję wykonać prostą przykładową aplikację, którą później opublikuję w systemie Windows Phone 8. Chcę utworzyć mapę Bing na stronie głównej MainPage.xaml, wyśrodkowanej na point (37.227700, -80422037) i mają już wypchane pinezki na mapie (nie te, które użytkownik dodaje, tylko znaczniki dla określonych lokalizacji, które wstępnie wypełniłem w oparciu o niektóre dynamiczne dane, które na stałe zapisałem). Kiedy uruchamiam mój kod, przechodzi on do strony i ładuje mapę, ale nie widać pinów. Co więcej, mapa nie jest powiększana, mimo że ustawiam właściwość ZoomLevel w xaml. Jestem nowy w tym paradygmacie kodowania, więc musi być coś, czego mi brakuje. Oto, co mam w plikach xaml i C#:Konfigurowanie pinezek w systemie Windows Phone 8 Mapy Bing (XAML C#)
MainPage.xaml.cs (pokazany jest tylko konstruktor, ale nie mam innych metod uproszczenia) (możesz zobaczyć skomentowane sekcje, w których próbowałem wielu podejścia, z których żaden nie pracował)
public MainPage()
{
InitializeComponent();
Map myMap = new Map();
MapLayer layer0 = new MapLayer();
Pushpin pushpin0 = new Pushpin();
//Pushpin pushpin0 = (Pushpin)this.FindName("pushpin0");
//Pushpin pushpin0 = MapExtensions.GetChildren(myMap).OfType<Pushpin>().First(p => p.Name == "pushpin0");
//if (pushpin0 == null) { pushpin0 = new Pushpin(); }
pushpin0.GeoCoordinate = new GeoCoordinate(37.228510, -80.422860);
MapOverlay overlay0 = new MapOverlay();
overlay0.Content = pushpin0;
overlay0.GeoCoordinate = new GeoCoordinate(37.228510, -80.422860);
layer0.Add(overlay0);
Pushpin pushpin1 = new Pushpin();
pushpin1.GeoCoordinate = new GeoCoordinate(37.226399, -80.425271);
MapOverlay overlay1 = new MapOverlay();
overlay1.Content = pushpin1;
layer0.Add(overlay1);
Pushpin pushpin2 = new Pushpin();
pushpin2.GeoCoordinate = new GeoCoordinate(37.228900, -80.427450);
MapOverlay overlay2 = new MapOverlay();
overlay2.Content = pushpin2;
layer0.Add(overlay2);
ContentPanel.Children.Add(myMap);
}
MainPage.xaml
<phone:PhoneApplicationPage
x:Class="SimpleApp.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
shell:SystemTray.IsVisible="True"
xmlns:Controls="clr-namespace:Microsoft.Phone.Maps.Controls;assembly=Microsoft.Phone.Maps"
xmlns:toolkit="clr-namespace:Microsoft.Phone.Maps.Toolkit;assembly=Microsoft.Phone.Controls.Toolkit">
<!--LayoutRoot is the root grid where all page content is placed-->
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!--TitlePanel contains the name of the application and page title-->
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
<TextBlock Text="Simple Map Application with Pushpins" Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/>
<TextBlock Text="Pushpins" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>
<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<Controls:Map x:Name="myMap" ZoomLevel="17" Center="37.227700, -80.422037" CartographicMode="Road">
<toolkit:MapExtensions.Children>
<toolkit:Pushpin x:Name="pushpin0" Content="My Position"/>
<toolkit:Pushpin x:Name="pushpin1" Content="My Position"/>
<toolkit:Pushpin x:Name="pushpin2" Content="My Position"/>
</toolkit:MapExtensions.Children>
</Controls:Map>
</Grid>
</Grid>
</phone:PhoneApplicationPage>
Istnieje rzeczywiście więcej szpilki do dodania, ale jestem przy założeniu, jeśli mam tylko kilka pracować, dodając więcej podobnie będzie banalnie.
Dziękuję bardzo! Wiedziałem, że musiało być coś trywialnego, czego mi brakowało i to było dodawanie warstwy. Miałem to w poprzednim kodzie, ale przypadkowo go skasowałem. Domyślam się, że koncepcja, której tu brakuje, polega na tym, że nie musisz definiować rzeczy w Xaml ORAZ definiować ich w kodzie. Po prostu zdefiniuj je w jednym miejscu i jeśli to konieczne, umiem je odnieść w drugim. Bez względu, dziękuję bardzo. – eholder0