Vývoj aplikací na Windows Phone 7
Dlouhodobá maturitní práce 2011/2012
Představení platformy
Jak začít
Zivotní cyklus
První aplikace
Uživatelské rozhraní
Ukázky aplikaci
Bing Mapy
Pro vývojáře, jež chtějí pracovat s Bing mapami si musí vytvořit tzv. "Maps Developer Account"
zde
.
Po otevření odkazu "Get an account" máte na výběr, zda se chcete přihlásit k již existujícímu Windows Live ID nebo si vytvořit nové. Pokud ještě nemáte Windows Live ID, klikněte na tlačítko Create (Vytvořit), v opačném případě na Sign In (Přihlásit). Podle popsaných kroků si vytvořte účet.
Nyní v menu na levé straně pod My Account vyberte položku Create or view keys (Vytvořit nebo zobrazit klíče) a vyplňte následující formulář podle vašich požadavků.
Po vytvoření klíče jej zkopírujte a vložte jako hodnotu atributu CredentialProvider.
Alternativní možností je tuto hodnotu nastavit ve vlastnostech u položky
CredentialsProvider
.
Ukázka zdrojového kódu aplikace BingMapy:
namespace BingMapy { public partial class MainPage : PhoneApplicationPage { GeoCoordinateWatcher geoWatcher; //přiřazení instance GeoCoordinateWatcher Pushpin pripinacek; //přiřazení instance připínáčku BingMapsTask mapTask = new BingMapsTask(); //načtení instance BingMapsTask /// <summary> /// Konstruktor /// </summary> public MainPage() { InitializeComponent(); chck_silnicniMod.IsChecked = true; //nastavení počáteční hodnoty komponenty chck_silnicMod } /// <summary> /// Metoda tlačítka btn_přiblíž, sloužící k přibližení mapy /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btn_přiblíž_Click(object sender, RoutedEventArgs e) { map1.ZoomLevel++; //přičte k součastné hodnotě ZoomLevelu jedničku } /// <summary> /// Metoda tlačítka btn_oddal, sloužící k oddálení mapy /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btn_oddal_Click(object sender, RoutedEventArgs e) { map1.ZoomLevel--; //odečte od součastné hodnoty ZoomLevelu jedničku } /// <summary> /// Obsluha událostí checkBoxu chck_silnicniMod na označení/odznačení /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void chck_silnicniMod_Checked(object sender, RoutedEventArgs e) { if (chck_silnicniMod.IsChecked == true) //zjišťuje, zda má checkBox chck_silnicniMod hodnotu true (zda je zaškrtnut) { map1.Mode = new RoadMode(); //přiřadí metodě Mode u prvku map1 instanci třídy RoadMode chck_leteckyMod.IsChecked = false; //nastaví hodnotu chck_leteckyMod na false z důvodu zamezení zaškrtnutí obou checkBoxů najednou } } /// <summary> /// Obsluha událostí checkBoxu chck_leteckyMod na označení/odznačení /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void chck_leteckyMod_Checked(object sender, RoutedEventArgs e) { if (chck_leteckyMod.IsChecked == true) //zjišťuje, zda má checkBox chck_leteckyMod hodnotu true (zda je zaškrtnut) { map1.Mode = new AerialMode(); //přiřadí metodě Mode u prvku map1 instanci třídy AerialMode chck_silnicniMod.IsChecked = false; //nastaví hodnotu chck_leteckyMod na false z důvodu zamezení zaškrtnutí obou checkBoxů najednou } } /// <summary> /// Metoda tlačítka btn_pozice na kliknutí, slouží k vyhledání pozice dle řetězce, který je uložen v komponentě txt_search /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btn_pozice_Click(object sender, RoutedEventArgs e) { mapTask.SearchTerm = txt_search.Text.ToString(); //vyhledání pozice dle řetězce, který je uložen v txt_search mapTask.Show(); //zobrazení pozice na komponentě BingMaps //txt_search.Text = geoWatcher.Status.ToString(); } /// <summary> /// posluchač instance geoWatcher, monitorující jeho stav /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void geoWatcher_StatusChanged(object sender, GeoPositionStatusChangedEventArgs e) { //podmínka, která zjišťuje, zda je polohovací služba připravena k používání if (e.Status == GeoPositionStatus.Ready) { pripinacek = new Pushpin(); //načtení instance připínáčku //pripinacek.Template = this.Resources["point.png"] as ControlTemplate; pripinacek.Location = geoWatcher.Position.Location; //nastavení pozice připínáčku na mapě map1.Children.Add(pripinacek); //vložení připínáčku na komponentu BingMapy //mapControl.Items.Add(pripinacek); map1.SetView(geoWatcher.Position.Location, 17.0); //nastavení pohledu na mapu (vycentrování + úroveň přiblížení) } } /// <summary> /// Metoda tlačítka btn_tvaPozice, sloužící k zobrazení součastné pozice /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btn_tvaPozice_Click(object sender, RoutedEventArgs e) { geoWatcher = new GeoCoordinateWatcher(GeoPositionAccuracy.Default); //načtení instance třídy geoWatcher s defaultní přestností //implementace posluchače na změnu stavu geoWatcher.StatusChanged += new EventHandler<GeoPositionStatusChangedEventArgs>(geoWatcher_StatusChanged); geoWatcher.Start(); //získání dat z lokalizační služby } } }
<Grid x:Name="LayoutRoot" Background="Transparent"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28"> <TextBlock x:Name="ApplicationTitle" Text="Mapy na Windows Phone" Style="{StaticResource PhoneTextNormalStyle}"/> <TextBlock x:Name="PageTitle" Text="Bing Mapy" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/> </StackPanel> <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <Grid.RowDefinitions> <RowDefinition Height="239*" /> <RowDefinition Height="368*" /> </Grid.RowDefinitions> <my:Map Height="380" HorizontalAlignment="Left" Name="map1" CredentialsProvider="ArqpP6BMWCR2R5qcuyf_VDso6NkdxDgxRxru9YnLn0p7bUtpqGdRqBsXAuXTQinc" VerticalAlignment="Top" Width="456" Grid.RowSpan="2"> <my:MapItemsControl x:Name="mapControl" DataContext="{Binding}" /> </my:Map> <Button Content="+" Height="68" HorizontalAlignment="Left" Name="btn_přiblíž" VerticalAlignment="Top" Width="68" Click="btn_přiblíž_Click" Margin="0,118,0,0" VerticalContentAlignment="Top" /> <Button Content="-" Height="68" HorizontalAlignment="Left" Name="btn_oddal" VerticalAlignment="Bottom" Width="68" Click="btn_oddal_Click" /> <CheckBox Content="Silniční" Grid.Row="1" Height="72" Margin="0,147,91,0" Name="chck_silnicniMod" VerticalAlignment="Top" Checked="chck_silnicniMod_Checked" HorizontalAlignment="Right" Width="140" /> <CheckBox Content="Letecké" Grid.Row="1" Height="72" HorizontalAlignment="Right" Margin="0,147,301,0" Name="chck_leteckyMod" VerticalAlignment="Top" Width="143" Checked="chck_leteckyMod_Checked" /> <Button Content="Hledej" Grid.Row="1" Height="72" HorizontalAlignment="Left" Margin="-12,224,0,0" Name="btn_hledej" VerticalAlignment="Top" Width="225" Click="btn_pozice_Click" /> <TextBox Grid.Row="1" Height="72" HorizontalAlignment="Left" Margin="225,224,0,0" Name="txt_search" Text="" VerticalAlignment="Top" Width="225" /> <Button Content="Zobraz tvou pozici" Grid.Row="1" Height="72" HorizontalAlignment="Left" Margin="89,290,0,0" Name="btn_tvaPozice" VerticalAlignment="Top" Width="276" Click="btn_tvaPozice_Click" /> </Grid> </Grid>
Ukázka aplikace BingMapy ke stažení
zde
.