Advertisement
mlarin

PointListPage

Apr 8th, 2020
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.33 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using Xamarin.Forms;
  4. using Xamarin.Forms.Maps;
  5.  
  6. namespace MapDemoPage
  7. {
  8.     public partial class PointListPage : ContentPage
  9.     {
  10.         class GeoObject
  11.         {
  12.             public string name { get; set; }
  13.             public double latitude;
  14.             public double longitude;
  15.             public GeoObject(string s, double lat, double lon)
  16.             {
  17.                 name = s; latitude = lat; longitude = lon;
  18.             }
  19.         }
  20.         Map map = new Map();
  21.         public PointListPage()
  22.         {
  23.             Label header = new Label
  24.             {
  25.                 Text = "Map Demo Page",
  26.                 FontAttributes = FontAttributes.Bold,
  27.                 HorizontalOptions = LayoutOptions.Center
  28.             };
  29.             Picker picker = new Picker
  30.             {
  31.                 Title = "Select a Point",
  32.                 ItemsSource = new List<GeoObject> {
  33.                     new GeoObject("Moscow", 55.755814, 37.617635),
  34.                     new GeoObject("Saint-Petersburg", 59.939095, 30.315868),
  35.                     new GeoObject("Sochi", 43.585525, 39.723062),
  36.                     new GeoObject("Velikiy Novgorod", 58.52131, 31.271),
  37.                     new GeoObject("Vladimir", 56.13655, 40.39658)
  38.                 }
  39.             };
  40.             picker.ItemDisplayBinding = new Binding("name");
  41.             picker.SelectedIndexChanged += Picker_SelectedIndexChanged;
  42.             // Build the page.
  43.             Title = "Map Demo Page";
  44.             Content = new StackLayout
  45.             {
  46.                 Children =
  47. {
  48. header,
  49. picker,
  50. map
  51. },
  52.                 Padding = new Thickness(0, 20, 0, 0)
  53.             };
  54.         }
  55.         //обработка выбора объекта в списке
  56.         private void Picker_SelectedIndexChanged(object sender, EventArgs e)
  57.         {
  58.             var picker = (Picker)sender;
  59.             int selectedIndex = picker.SelectedIndex;
  60.             if (selectedIndex != -1)
  61.             {
  62.                 var geoObject = (GeoObject)picker.ItemsSource[selectedIndex];
  63.                 Position position = new Position(geoObject.latitude,
  64.                 geoObject.longitude);
  65.                 map.MoveToRegion(new MapSpan(position, 0.01, 0.01));
  66.                 var pin = new Pin
  67.                 {
  68.                     Label = geoObject.name,
  69.                     Position = position
  70.                 };
  71.                 pin.Clicked += Pin_Clicked;
  72.                 map.Pins.Add(pin);
  73.             }
  74.             if (selectedIndex != 0 & selectedIndex != 1 & selectedIndex != 2 & selectedIndex != 4)
  75.             {
  76.                 DisplayAlert("Velikiy Novgorod", $" Население 224 297 чел.",
  77.                 "OK");
  78.             }
  79.             if (selectedIndex != 0 & selectedIndex != 1 & selectedIndex != 2 & selectedIndex != 3)
  80.             {
  81.                 DisplayAlert("Vladimir", $" Население 357 907 чел.",
  82.                 "OK");
  83.             }
  84.         }
  85.         //обработка нажатия на карте
  86.         private async void Pin_Clicked(object sender, EventArgs e)
  87.         {
  88.             var selectedItem = (Pin)sender;
  89.             if (selectedItem != null)
  90.                 await DisplayAlert("Tapped!", $"{selectedItem.Label} was tapped!",
  91.                 "OK");
  92.         }
  93.     }
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement