xamarin.forms地图隐藏缩放按钮(+ - )

asa*_*saf 3 google-maps xamarin.forms

我想隐藏xamarin.forms中的+ - 缩放按钮,但保持缩放功能

HasZoomEnabled属性删除了按钮,但也禁用了缩放功能

有没有渲染的解决方案?

如果不是我将很乐意在Android中获得渲染解决方案

Geo*_*kis 8

使用自定义渲染器创建自定义控件

所以在你的pcl项目中添加

public class CustomMap : Map
    {
        public CustomMap(MapSpan region) : base(region)
        {
        }
    }
Run Code Online (Sandbox Code Playgroud)

在你的android项目中添加

[assembly: ExportRenderer(typeof(CustomMap), typeof(CustomMapRenderer))]

namespace MobApp.Droid.Renderers
{
    public class CustomMapRenderer : MapRenderer
    {
        protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            base.OnElementPropertyChanged(sender, e);                

            var map = ((MapView)Control).Map;
            map.UiSettings.ZoomControlsEnabled = false;
            map.UiSettings.MyLocationButtonEnabled = false;
            map.UiSettings.RotateGesturesEnabled = false;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

并像这样使用它

var map = new CustomMap(
                MapSpan.FromCenterAndRadius(
                    new Position(37.990599, 23.766820), Distance.FromKilometers(1)))

            {
                IsShowingUser = true,
                HeightRequest = 100,
                WidthRequest = 960,
                VerticalOptions = LayoutOptions.FillAndExpand
            };
Run Code Online (Sandbox Code Playgroud)


小智 5

自 2016 年以来,有些事情可能发生了变化,因此这里有一个最新的解决方案(2020 年/1 月):

您需要按照评论中的说明创建一个 CustomRenderer,并像这样覆盖以下方法“OnMapReady”:

    protected override void OnMapReady(GoogleMap map)
    {
        base.OnMapReady(map);
        map.UiSettings.ZoomControlsEnabled = false;
        map.UiSettings.MyLocationButtonEnabled = false;
    }
Run Code Online (Sandbox Code Playgroud)