Problem with Google Maps map for Xamarin Forms

0

I'm doing a small project about integrating Google Maps in Xamarin Forms and I do not get any errors just that it does not show me the map, it shows me the screen in gray.

public class MapPage : ContentPage
{
    Map map;
    public MapPage()
    {
        map = new Map
        {
            IsShowingUser = true,
            HeightRequest = 100,
            WidthRequest = 960,
            VerticalOptions = LayoutOptions.FillAndExpand
        };

        map.MoveToRegion (MapSpan.FromCenterAndRadius (new Position (37, -122), Distance.FromMiles (0.3)));       

        var slider = new Slider(1, 18, 1);
        slider.ValueChanged += (sender, e) => {
            var zoomLevel = e.NewValue; 
            var latlongdegrees = 360 / (Math.Pow(2, zoomLevel));
            Debug.WriteLine(zoomLevel + " -> " + latlongdegrees);
            if (map.VisibleRegion != null)
                map.MoveToRegion(new MapSpan(map.VisibleRegion.Center, latlongdegrees, latlongdegrees));
        };

        var street = new Button { Text = "Street" };
        var hybrid = new Button { Text = "Hybrid" };
        var satellite = new Button { Text = "Satellite" };
        street.Clicked += HandleClicked;
        hybrid.Clicked += HandleClicked;
        satellite.Clicked += HandleClicked;
        var segments = new StackLayout
        {
            Spacing = 30,
            HorizontalOptions = LayoutOptions.CenterAndExpand,
            Orientation = StackOrientation.Horizontal,
            Children = { street, hybrid, satellite }
        };

        var stack = new StackLayout { Spacing = 0 };
        stack.Children.Add(map);
        stack.Children.Add(slider);
        stack.Children.Add(segments);
        Content = stack;

        map.PropertyChanged += (sender, e) => {
            Debug.WriteLine(e.PropertyName + " just changed!");
            if (e.PropertyName == "VisibleRegion" && map.VisibleRegion != null)
                CalculateBoundingCoordinates(map.VisibleRegion);
        };
    }

    void HandleClicked(object sender, EventArgs e)
    {
        var b = sender as Button;
        switch (b.Text)
        {
            case "Street":
                map.MapType = MapType.Street;
                break;
            case "Hybrid":
                map.MapType = MapType.Hybrid;
                break;
            case "Satellite":
                map.MapType = MapType.Satellite;
                break;
        }
    }

    static void CalculateBoundingCoordinates(MapSpan region)
    {
        var center = region.Center;
        var halfheightDegrees = region.LatitudeDegrees / 2;
        var halfwidthDegrees = region.LongitudeDegrees / 2;

        var left = center.Longitude - halfwidthDegrees;
        var right = center.Longitude + halfwidthDegrees;
        var top = center.Latitude + halfheightDegrees;
        var bottom = center.Latitude - halfheightDegrees;

        if (left < -180) left = 180 + (180 + left);
        if (right > 180) right = (right - 180) - 180;

        Debug.WriteLine("Bounding box:");
        Debug.WriteLine("                    " + top);
        Debug.WriteLine("  " + left + "                " + right);
        Debug.WriteLine("                    " + bottom);
    }
}

    
asked by Daniel 27.07.2017 в 02:45
source

0 answers