как показать селекторы на Xamarin.Forms.maps.map - PullRequest
1 голос
/ 11 апреля 2020

В моем приложении есть компонент карты, который я создаю в Stacklayout в XAML следующим образом:

    <maps:Map x:Name="amap">
        <x:Arguments>
            <maps:MapSpan>
                <x:Arguments>
                    <maps:Position>
                        <x:Arguments>
                            <x:Double x:Name="Lat">48.2</x:Double>
                            <x:Double x:Name="Long">-106.6501939</x:Double>
                        </x:Arguments>
                    </maps:Position>
                    <x:Double>0.01</x:Double>
                    <x:Double>0.01</x:Double>
                </x:Arguments>
            </maps:MapSpan>
        </x:Arguments>
    </maps:Map>

Затем я получаю местоположение из поиска в БД, сбрасываю булавку в этом месте и перемещаюсь по ней :

    private void MoveMap(Quarter location)
    {
        var pin = new Pin();
        pin.Position = new Position(location.Lat, location.Lon);
        pin.Label = locationEntry.Text;
        MoveMap(pin);
    }
    private void MoveMap(Pin pin)
    {
        amap.Pins.Add(pin);
        amap.MoveToRegion(new MapSpan(pin.Position, 0.1, 0.1));
    }

google map in app

Пока все хорошо, но если я нажму на булавку, она станет лучше ...

better google map

Я ищу способ, чтобы ссылки на карты Google внизу отображались сразу. Я также хотел бы сделать ярлык на булавке. Я пытался позвонить amap.SendMapClicked(pin.Position) сразу после вызова MoveToRegion, но ничего не происходит.

И, наконец, я хотел бы отобразить «селектор режима» на картах Google, который переключается между спутником и по умолчанию.

Возможно ли это? Много гуглинга не дает мне особой надежды.

1 Ответ

0 голосов
/ 17 апреля 2020

Попробуйте, это работает для меня

    private void MoveMap(Quarter location)
    {
        var pin = new Pin
        {
            Type = PinType.Place,
            Position = new Position(location.Lat, location.Lon),
            Label = locationEntry.Text
        };
        amap.Pins.Add(item.Pins);
        amap.MoveToRegion(MapSpan.FromCenterAndRadius(new Position(pin.Position.Latitude, pin.Position.Longitude),
Distance.FromMiles(50)));

    }
...