Advertisement
Guest User

Untitled

a guest
Jul 26th, 2017
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.70 KB | None | 0 0
  1. map.MoveToRegion (MapSpan.FromCenterAndRadius (new Position (37, -122), Distance.FromMiles (0.3)));
  2.  
  3.  
  4. var slider = new Slider(1, 18, 1);
  5. slider.ValueChanged += (sender, e) => {
  6. var zoomLevel = e.NewValue;
  7. var latlongdegrees = 360 / (Math.Pow(2, zoomLevel));
  8. Debug.WriteLine(zoomLevel + " -> " + latlongdegrees);
  9. if (map.VisibleRegion != null)
  10. map.MoveToRegion(new MapSpan(map.VisibleRegion.Center, latlongdegrees, latlongdegrees));
  11. };
  12.  
  13.  
  14. var street = new Button { Text = "Street" };
  15. var hybrid = new Button { Text = "Hybrid" };
  16. var satellite = new Button { Text = "Satellite" };
  17. street.Clicked += HandleClicked;
  18. hybrid.Clicked += HandleClicked;
  19. satellite.Clicked += HandleClicked;
  20. var segments = new StackLayout
  21. {
  22. Spacing = 30,
  23. HorizontalOptions = LayoutOptions.CenterAndExpand,
  24. Orientation = StackOrientation.Horizontal,
  25. Children = { street, hybrid, satellite }
  26. };
  27.  
  28.  
  29. var stack = new StackLayout { Spacing = 0 };
  30. stack.Children.Add(map);
  31. stack.Children.Add(slider);
  32. stack.Children.Add(segments);
  33. Content = stack;
  34.  
  35.  
  36. map.PropertyChanged += (sender, e) => {
  37. Debug.WriteLine(e.PropertyName + " just changed!");
  38. if (e.PropertyName == "VisibleRegion" && map.VisibleRegion != null)
  39. CalculateBoundingCoordinates(map.VisibleRegion);
  40. };
  41. }
  42.  
  43. void HandleClicked(object sender, EventArgs e)
  44. {
  45. var b = sender as Button;
  46. switch (b.Text)
  47. {
  48. case "Street":
  49. map.MapType = MapType.Street;
  50. break;
  51. case "Hybrid":
  52. map.MapType = MapType.Hybrid;
  53. break;
  54. case "Satellite":
  55. map.MapType = MapType.Satellite;
  56. break;
  57. }
  58. }
  59.  
  60.  
  61.  
  62. static void CalculateBoundingCoordinates(MapSpan region)
  63. {
  64. var center = region.Center;
  65. var halfheightDegrees = region.LatitudeDegrees / 2;
  66. var halfwidthDegrees = region.LongitudeDegrees / 2;
  67.  
  68. var left = center.Longitude - halfwidthDegrees;
  69. var right = center.Longitude + halfwidthDegrees;
  70. var top = center.Latitude + halfheightDegrees;
  71. var bottom = center.Latitude - halfheightDegrees;
  72.  
  73. if (left < -180) left = 180 + (180 + left);
  74. if (right > 180) right = (right - 180) - 180;
  75.  
  76. Debug.WriteLine("Bounding box:");
  77. Debug.WriteLine(" " + top);
  78. Debug.WriteLine(" " + left + " " + right);
  79. Debug.WriteLine(" " + bottom);
  80. }
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement