рд╡рд┐рдВрдбреЛрдЬрд╝ рдлреЛрди рдкрд░ рдореИрдк рдФрд░ рд╕реНрдерд╛рди рдбреЗрдЯрд╛


рд╣рдо рдорд╛рдирдЪрд┐рддреНрд░ рдирд┐рдпрдВрддреНрд░рдг рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдкрд░ рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЖрдЗрдП рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реЗ рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдПрдХреНрд╕рдкреНрд▓реЛрд░рдкреЙрдЗрдВрдЯрдХрдВрдЯреНрд░реЛрд▓ рдирд╛рдо рджреЗрдВред

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХрд┐рди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдЕрдЧрд▓рд╛, рдЯреВрд▓рдмреЙрдХреНрд╕ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ, рдЕрдЧрд░ рдпрд╣ рдХрдо рд╕реЗ рдХрдо рд╣реЛ, рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдбрд┐рдЬрд╛рдЗрдирд░ рдореЗрдВ рдорд╛рдирдЪрд┐рддреНрд░ рдирд┐рдпрдВрддреНрд░рдг рдЦреАрдВрдЪреЗрдВред



рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЕрдм Microsoft.Phone.Controls.Map рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред



MainPage.xaml рдкреЗрдЬ рдкрд░ рдбрдмрд▓-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ XAML рдХреЛрдб рдореЗрдВ рдХреНрдпрд╛ рдмрджрд▓рд╛рд╡ рдЖрдпрд╛ рд╣реИред рдореЗрд░реЗ рдирд╛рдо рд╕реНрдерд╛рди рд╕реЗ рдПрдХ рдорд╛рдирдЪрд┐рддреНрд░ рдирд┐рдпрдВрддреНрд░рдг рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ:
<my:Map Height="50" HorizontalAlignment="Left" Margin="201,198,0,0" Name="map1" VerticalAlignment="Top" Width="100" /> 

XAML рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд╢реАрд░реНрд╖рдХ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдирд╛рдорд╕реНрдерд╛рди рдХреНрдпрд╛ рд╣реИ:
 xmlns:my="clr-namespace:Microsoft.Phone.Controls.Maps;assembly=Microsoft.Phone.Controls.Maps" 

рдЖрдЗрдП рдореЗрд░реЗ рдирдХреНрд╢реЗ рдХреЛ рдмрджрд▓реЗрдВ рддрд╛рдХрд┐ рдирд╛рдорд╕реНрдерд╛рди рдХрд╛ рдирд╛рдо рдЙрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реЛ:
 xmlns:map="clr-namespace:Microsoft.Phone.Controls.Maps;assembly=Microsoft.Phone.Controls.Maps" 


 <map:Map Height="50" HorizontalAlignment="Left" Margin="201,198,0,0" Name="map1" VerticalAlignment="Top" Width="100" /> 

рдорд╛рдирдЪрд┐рддреНрд░ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ XAML рдХреЛрдб рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдпрд╛ рдкреНрд░реЙрдкрд░рд╛рдЗрдЯреНрд╕ рдкреИрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рддрд╛рдХрд┐ рддрддреНрд╡ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЦрд╛рд▓реА рд╕реНрдерд╛рди рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗ рдФрд░ рддрддреНрд╡ рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ MyMap рдХрд░ рджреЗ:
 <map:Map Name="MyMap"/> 


рдПрдкреНрд▓рд┐рдХреЗрд╢рди (F5) рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред



рдХреНрдпрд╛ рдЖрдкрдиреЗ рд╕реНрдХреНрд░реАрди рдХреЗ рдХреЗрдВрджреНрд░ рдореЗрдВ рдПрдХ рд╕рдлреЗрдж рдмреИрдирд░ рджреЗрдЦрд╛ рд╣реИ рдЬреЛ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЧрд▓рдд рд▓реЙрдЧрд┐рди рд╡рд┐рд╡рд░рдг рд╣реИ? рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдирд┐рдпрдВрддреНрд░рдг рдмрд┐рдВрдЧ рдХреА рдореИрдк рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрдВрдЬреАрдХрд░рдг рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЖрдк рдмрд┐рдВрдЧ рдореИрдкреНрд╕ рдкреЛрд░реНрдЯрд▓: http://www.bingmapsportal.com рдкрд░ рдХреБрдВрдЬреА рдХреЛ рдкрдВрдЬреАрдХреГрдд рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкрдВрдЬреАрдХрд░рдг рдХреЗ рдЕрдВрдд рдореЗрдВ, рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреБрдВрдЬреА рдорд┐рд▓рддреА рд╣реИ, рдЬрд┐рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рддрддреНрд╡ рдХреЗ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕рдкреНрд░реЙрдЗрдбрд░ рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдпрд╛ рдбреЗрдЯрд╛ рдореЗрдВ рднреА рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕рд░рд▓ рдорд╛рдирдЪрд┐рддреНрд░ рдирд┐рдпрдВрддреНрд░рдг рдЬреЛрдбрд╝реЗрдВ: рдЬрд╝реВрдо рдЖрдЙрдЯ / рдЬрд╝реВрдо рдЖрдЙрдЯ рдХрд░реЗрдВ, рдорд╛рдирдЪрд┐рддреНрд░ рдкреНрд░рджрд░реНрд╢рди рдореЛрдб рдмрджрд▓реЗрдВред
 <!--ContentPanel - place additional content here--> <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <map:Map Name="MyMap"> <Button Name="ZoomIn" Content="+" HorizontalAlignment="Center" VerticalAlignment="Bottom" Height="60" Width="60" Margin="-100,0,0,-5" Click="ZoomIn_Click" FontWeight="Bold" Padding="0,-9,0,0"/> <Button Name="ZoomOut" Content="-" HorizontalAlignment="Center" VerticalAlignment="Bottom" Height="60" Width="60" Margin="100,0,0,-5" Click="ZoomOut_Click" FontWeight="Bold" Padding="0,-9,0,0" /> <Button Name="LayoutChange" Content="L" HorizontalAlignment="Center" VerticalAlignment="Bottom" Height="60" Width="60" Margin="0,0,0,-5" FontWeight="Bold" Padding="0,-9,0,0" Click="LayoutChange_Click"/> </map:Map> </Grid> 

рдФрд░ рд╣рдо рдЗрди рдШрдЯрдирд╛рдУрдВ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдВрдЧреЗред
 private void ZoomIn_Click(object sender, RoutedEventArgs e) { MyMap.ZoomLevel += 1; } private void ZoomOut_Click(object sender, RoutedEventArgs e) { MyMap.ZoomLevel -= 1; } private void LayoutChange_Click(object sender, RoutedEventArgs e) { if (MyMap.Mode is RoadMode) { MyMap.Mode = new AerialMode(true); } else { MyMap.Mode = new RoadMode(); } } 

рдирд┐рдореНрди рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмреНрд▓реЙрдХ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛рдж рд░рдЦреЗрдВ:
 using Microsoft.Phone.Controls.Maps; 

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ (F5) рдФрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдирд┐рдпрдВрддреНрд░рдг рдЗрд░рд╛рджрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореЗрдЯреНрд░реЛ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдВрдбреЛ рдХреЗ рдирд┐рдЪрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдмрдЯрди рдХреЗ рд╕рд╛рде рдкреИрдирд▓ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдХреЗрд╡рд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╣рдо рдПрдХ рд╕рд░рд▓ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рдЕрднреНрдпрд╛рд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдмрдЯрди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, XAML рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирдореВрдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрд╛рд░ рдХреЛрдб рдХреЛ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдореЗрдЯреНрд░реЛ рд╢реИрд▓реА рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЖрд╡реЗрджрди рдХрд╛ рд░реАрдореЗрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдм рдЪрд▓реЛ рдлреЛрди рдкрд░ рдЙрдкрд▓рдмреНрдз рдЬрд┐рдпреЛрд▓реЛрдХреЗрд╢рди рд╕реЗрд╡рд╛рдУрдВ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред рд╕реЗрд╡рд╛ рд╡рд╛рдИ-рдлрд╛рдИ, рд╕реЗрд▓реБрд▓рд░ рд╕рдВрдЪрд╛рд░ рдФрд░ рдЬреАрдкреАрдПрд╕ рд░рд┐рд╕реАрд╡рд░ рд╕реЗ рдбреЗрдЯрд╛ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рдВрдпреЛрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рдЕрдм рд╣рдо рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдЬрд┐рдпреЛрд▓реЛрдХреЗрд╢рди рд╕реЗрд╡рд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмреНрд▓реЙрдХ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
 using Microsoft.Devices.Sensors; 

рдЕрдм рд╣рдо рд╕реНрдерд╛рди / рд╕реНрдерд╛рди рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЕрдкрдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдЬреЛрдбрд╝ рд▓рд┐рдЦреЗрдВрдЧреЗ, рдЬреЛ рд╕реЗрд╡рд╛рдУрдВ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЬрд┐рдпреЛрд▓реЛрдХреЗрд╢рди рдбреЗрдЯрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ рдХреЗрдВрджреНрд░ рдореЗрдВ рд░рдЦреЗрдЧрд╛ред
рд╡рд░реНрдЧ рдореЗрдВ рдЯрд╛рдЗрдк рдХрд░реЗрдВ GeoCoordinateWatcher рдХреЗ рдПрдХ рдЪрд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛, рдЬреЛ рд╣рдореЗрдВ рдЬрд┐рдпреЛрд▓реЛрдХреЗрд╢рди рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рдЙрдирд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
 private GeoCoordinateWatcher myGeoWatcher; 

рдХреНрд▓рд╛рд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ, рдПрдХреНрд╕реЗрд▓реЗрд░реЛрдореАрдЯрд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреЛрдб рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж, рд╣рдо рд╕реЗрд╡рд╛ рд╕реНрдерд┐рддрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдФрд░ рдкрдВрдЬреАрдХрд░рдг рдХреЛрдб рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ (рд╡реЗ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрджрд┐) рдФрд░ рд╕реНрдерд┐рддрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдШрдЯрдирд╛ред
 yGeoWatcher = new GeoCoordinateWatcher(); myGeoWatcher.MovementThreshold = 100.0f; myGeoWatcher.StatusChanged += new EventHandler<GeoPositionStatusChangedEventArgs>(myGeoWatcher_StatusChanged); myGeoWatcher.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(myGeoWatcher_PositionChanged); 

рдПрдХ рдЕрдЪреНрдЫреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЬрд┐рдпреЛрд╕реЗрд░реНрд╡рд┐рд╕реЗрдЬ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕реЗ рд╡реЗ рд╣рдореЗрд╢рд╛ рдбреЗрдЯрд╛ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рдлреА рд╕рдордп рдмрд┐рддрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдмрд╕ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЦрд╛рд▓реА рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдПрдореБрд▓реЗрдЯрд░ рдкрд░ рдЖрд╡реЗрджрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдРрд╕реА рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред
рдЬрд┐рдпреЛрд▓реЛрдХреЗрд╢рди рд╕реЗрд╡рд╛ рдХреЗ рд▓реЙрдиреНрдЪ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд░рдЦрдирд╛ рдЕрдзрд┐рдХ рд╕рд╣реА рд╣реЛрдЧрд╛, рддрд╛рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рдзреАрдорд╛ рди рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЖрд╡реЗрджрди рдХреЗ рд╣рдорд╛рд░реЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдПрдореБрд▓реЗрдЯрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рд╣рдо рдХреНрд▓рд╛рд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рд╕рд░реНрд╡рд┐рд╕ рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВрдЧреЗ:
 myGeoWatcher.TryStart(false, TimeSpan.FromSeconds(60)); 

рдпрджрд┐ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдиреЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП StatusChanged рдФрд░ PositionChanged рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░реНрд╕ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬрдирд░реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЗрди рддрд░реАрдХреЛрдВ рд╕реЗ рдХреЛрдб рдХреЛ рдЯрд┐рдкреНрдкрдгреА рджреЗрдВ рдпрд╛ рд╣рдЯрд╛рдПрдВ рдЬреЛ NotImplemented рдЕрдкрд╡рд╛рдж рдХреЛ рдЙрдард╛рддрд╛ рд╣реИ:
 throw new NotImplementedException(); 

рд╕реНрдерд┐рддрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП рдЧрдП рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ, рд╡рд╣ рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рд╕реНрдерд┐рддрд┐ рдмрджрд▓рддреЗ рд╕рдордп рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ рдХреЗрдВрджреНрд░ рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ:
 void myGeoWatcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e) { MyMap.Center = e.Position.Location; } 


рдПрдкреНрд▓рд┐рдХреЗрд╢рди (F5) рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдпреЛрд▓реЛрдХреЗрд╢рди рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдореБрд▓реЗрдЯрд░ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝реВрдо рдХрд░реЗрдВ рдХрд┐ рд╕реНрдерд┐рддрд┐ рд╕рд╣реА рд╣реЛ рд░рд╣реА рд╣реИред


рдЕрдЧрд▓рд╛ рдХрджрдо, рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╕реБрдзрд╛рд░, рдЬрд┐рдпреЛрд▓реЛрдХреЗрд╢рди рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдЯреЗрдЯрд╕ рдмрд╛рд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ, рдФрд░ рд╣рдорд╛рд░реЗ рд╕реНрдерд╛рди рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдПрдХ рдмрд┐рдВрджреБ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рджреВрд╕рд░реЗ рдереНрд░реЗрдб рдореЗрдВ рд╕реЗрд╡рд╛рдПрдВ рд▓реЙрдиреНрдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдереНрд░реЗрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдирд┐рдореНрди рдмреНрд▓реЙрдХ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
 using System.Threading; 

рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ, рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:
 new Thread(startMyGeoWotcher).Start(); 

рдЙрд╕рдХреЗ рдмрд╛рдж, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдПрдВ рдЬреЛ рдирд╛рдо startMyGeoWotcher рдХреЗ рд╕рд╛рде рдорд╛рдиреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдпрд╛ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕реЗрд╡рд╛ рд▓реЙрдиреНрдЪ рдХреЛ рдЗрд╕рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ:
 void startMyGeoWotcher() { myGeoWatcher.TryStart(false, TimeSpan.FromSeconds(60)); } 

рдЕрдм рдЬрд┐рдпреЛрд▓реЛрдХреЗрд╢рди рд╕реЗрд╡рд╛рдУрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ TextBlock рдирд┐рдпрдВрддреНрд░рдг рдЬреЛрдбрд╝реЗрдВ
 <!--ContentPanel - place additional content here--> <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <StackPanel> <TextBlock Name="GeoStatus" HorizontalAlignment="Center" VerticalAlignment="Top" Text="Geo Status .." /> <map:Map Name="MyMap" Height="580"> <Button Name="ZoomIn" Content="+" HorizontalAlignment="Center" VerticalAlignment="Bottom" Height="60" Width="60" Margin="-100,0,0,-5" Click="ZoomIn_Click" FontWeight="Bold" Padding="0,-9,0,0"/> <Button Name="ZoomOut" Content="-" HorizontalAlignment="Center" VerticalAlignment="Bottom" Height="60" Width="60" Margin="100,0,0,-5" Click="ZoomOut_Click" FontWeight="Bold" Padding="0,-9,0,0" /> <Button Name="LayoutChange" Content="L" HorizontalAlignment="Center" VerticalAlignment="Bottom" Height="60" Width="60" Margin="0,0,0,-5" FontWeight="Bold" Padding="0,-9,0,0" Click="LayoutChange_Click"/> </map:Map> </StackPanel> </Grid> 

рдФрд░ StatusChanged рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рд╕реНрдЯреЗрдЯрд╕ рдЖрдЙрдЯрдкреБрдЯ рдЬреЛрдбрд╝реЗрдВ:
 void myGeoWatcher_StatusChanged(object sender, GeoPositionStatusChangedEventArgs e) { switch (e.Status) { case GeoPositionStatus.Disabled: if (myGeoWatcher.Permission == GeoPositionPermission.Denied) { GeoStatus.Text = " "; } else { GeoStatus.Text = "    "; } break; case GeoPositionStatus.Initializing: GeoStatus.Text = " "; break; case GeoPositionStatus.NoData: GeoStatus.Text = "   "; break; case GeoPositionStatus.Ready: GeoStatus.Text = "   "; break; } } 

рдЕрдВрдд рдореЗрдВ, рд╕реНрдерд┐рддрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ, рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдмрд┐рдВрджреБ рд╕реЗрдЯрд┐рдВрдЧ рдЬреЛрдбрд╝реЗрдВред
рдХрдХреНрд╖рд╛ рдореЗрдВ рдПрдХ рдкреБрд╢рдкрд┐рди рдЪрд░ рдЬреЛрдбрд╝реЗрдВ:
 private Pushpin myPushpin; 

рдЪрд▓рд┐рдП рдЗрд╕реЗ рдХреНрд▓рд╛рд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдмрдирд╛рддреЗ рд╣реИрдВ:
 myPushpin = new Pushpin(); 

рд╕реНрдерд┐рддрд┐ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИрдВрдбрд▓рд░ рдореЗрдВ, рдЗрд╕реЗ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рдпрджрд┐ рдпрд╣ рдирд╣реАрдВ рд╣реИ рддреЛ рдЗрд╕реЗ рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
 myPushpin.Location = e.Position.Location; if (!MyMap.Children.Contains(myPushpin)) MyMap.Children.Add(myPushpin); 

рдПрдкреНрд▓рд┐рдХреЗрд╢рди (F5) рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдпреЛрд▓реЛрдХреЗрд╢рди рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдореБрд▓реЗрдЯрд░ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝реВрдо рдХрд░реЗрдВ рдХрд┐ рдмрд┐рдВрджреБ рдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рд╕реЗрдЯрд┐рдВрдЧ рд╕рд╣реА рд╣реИ; рдЬрд┐рдпреЛрд▓реЛрдХреЗрд╢рди рд╕реЗрд╡рд╛рдУрдВ рдХреА рдкреНрд░рджрд░реНрд╢рд┐рдд рд╕реНрдерд┐рддрд┐ рдХреА рднреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред


UPD : рдЬреИрд╕рд╛ рдХрд┐ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ andrew_kane ред рдПрдХ рдкреВрд▓ рд╕реЗ рдзрд╛рдЧреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдЙрдЪрд┐рдд рдЕрднреНрдпрд╛рд╕ рд╣реИред

рдиреАрдЪреЗ рд╡рд╣ рдХреЛрдб рд╣реИ рдЬрд┐рд╕реЗ рдкреВрд▓ рд╕реЗ рдереНрд░реЗрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛, рди рдХрд┐ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
 new Thread(...).Start(); 

рдХреЗ рдмрджрд▓реЗ
 new Thread(startMyGeoWotcher).Start(); 

рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 ThreadPool.QueueUserWorkItem(startMyGeoWotcher, myGeoWatcher); 

рд╣рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 2 рд╡рд┐рдХрд▓реНрдк рд╣реЛрддреЗ рд╣реИрдВ, рдпрд╛ рддреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реНрдерд┐рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╛ рдЗрд╕реЗ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВред

рдЕрдм рдЖрдкрдХреЛ рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
 startMyGeoWotcher 
рдпрд╣ рдЕрдм рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:
 static void startMyGeoWotcher(object GeoWatcher) { ((GeoCoordinateWatcher)GeoWatcher).TryStart(false, TimeSpan.FromSeconds(60)); } 


рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ:
MSDN рдкрд░ рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рд╕реЗрдВрдЯрд░
рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдПрд╕рдбреАрдХреЗ 7.1
рд░реВрд╕реА рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рд╡рд┐рдХрд╛рд╕ рдордВрдЪ

Source: https://habr.com/ru/post/In134239/


All Articles