如何在.Net Maui上显示(Google)Map

lnxxn5zx  于 2022-12-01  发布在  .NET
关注(0)|答案(5)|浏览(297)

我正在玩.Net Maui。我想在我的演示应用中添加一个Map。不幸的是,Map控件似乎还没有迁移。而且,似乎承诺的控件实现已经从RC的路线图中删除。
还有像这样的现有项目:https://github.com/amay077/Xamarin.Forms.GoogleMaps不支持.Net毛伊岛...
有没有人已经包括了一个.Net毛伊岛项目的Map,可以给我一些提示?
谢谢!

nnt7mjpx

nnt7mjpx1#

要在.NET MAUI中使用Google或Apple Maps,请使用您自己的处理程序,因为它尚未包含在Framework中。
但一般来说,你必须做以下几个步骤:
1.创建表示Map的视图

public class MapView : View, IMapView
    { }

这是您在ContentPage中使用的控件。
1.创建与平台无关的处理程序实现以呈现视图
要呈现视图,MAUI需要一个与平台无关的入口点。

partial class MapHandler
    {
        public static IPropertyMapper<MapView, MapHandler> MapMapper = new PropertyMapper<MapView, MapHandler>(ViewMapper)
        { };

        public MapHandler() : base(MapMapper)
        { }
    }

需要在您的MauiProgram.cs中注册

.ConfigureMauiHandlers(handlers =>
{
    handlers.AddHandler(typeof(MapHandlerDemo.Maps.Map),typeof(MapHandler));
})

1.创建特定于平台的处理程序实现
处理程序告诉MAUI如何呈现你的控件。所以你需要为你想支持的每个平台都准备一个处理程序。与Android相比,iOS处理程序实现起来更简单、更短。

public partial class MapHandler : ViewHandler<MapView, MKMapView>
    {
        public MapHandler(IPropertyMapper mapper, CommandMapper commandMapper = null) : base(mapper, commandMapper)
        { }

        protected override MKMapView CreatePlatformView()
        {
            return new MKMapView(CoreGraphics.CGRect.Empty);
        }

        protected override void ConnectHandler(MKMapView PlatformView)
        { }

        protected override void DisconnectHandler(MKMapView PlatformView)
        {
            // Clean-up the native view to reduce memory leaks and memory usage
            if (PlatformView.Delegate != null)
            {
                PlatformView.Delegate.Dispose();
                PlatformView.Delegate = null;
            }

            PlatformView.RemoveFromSuperview();
        }
    }

下一步是实现Android处理程序。

y0u0uwnf

y0u0uwnf2#

我也错过了它。在MAUI团队的早期路线图中,它被宣布为2022年2月和MAUI版本12,但与此同时,我们有3月底和MAUI 14,但在Map控制方面没有进展。但Xamarin,前身,仍然有它。顺便说一句,这阻止了我转移到MAUI。

icnyk63a

icnyk63a3#

试试NuGet上Michael Vivet的GoogleApi包。它与Net5兼容。我已经下载了源代码并将Net6添加到dll中,它工作得很完美。

5ssjco0h

5ssjco0h4#

我已经将Xamarin.Forms.GoogleMaps移植到.NET MAUI。如果你有任何问题,请随时与我联系:https://www.nuget.org/packages/Onion.Maui.GoogleMaps/

epfja78i

epfja78i5#

请尝试以下方式:

<WebView Source="https://embed.windy.com" />

Check please also

相关问题