SuperAPI AI 工具集

maui-maps

编程与开发

查看项目

更新于 10-15 20:34

技能介绍

用途:在 .NET MAUI 应用中集成地图功能,包括查看地图、添加图钉(Pin)、绘制多边形与折线、地址与坐标互转(Geocoding),以及面向 Android、iOS、Mac Catalyst 与 Windows 的平台配置指导。

主要能力与要点:

  • 使用 Map 控件配合 Pins.Add() 或 ItemsSource 数据绑定展示点位;动态数据推荐绑定,避免逐个添加大量图钉。
  • 使用 MapElements 绘制 Polygon、Polyline、Circle。
  • 地理编码:Geocoding.Default.GetLocationsAsync(address) 地址转坐标;Geocoding.Default.GetPlacemarksAsync(lat, lon) 坐标转地址。
  • 自定义覆盖层可通过 handlers 访问原生地图 API。

使用方式与必要配置:

  • 添加 NuGet:Microsoft.Maui.Controls.Maps;在 MauiProgram.cs 调用 builder.UseMauiMaps(),否则运行时报“No registered handler for Map”并崩溃。
  • 名称冲突:Microsoft.Maui.Controls.Maps.Map 与 Microsoft.Maui.ApplicationModel.Map 同名,需加入别名。代码中写:using Map = Microsoft.Maui.Controls.Maps.Map; XAML 中声明前缀:xmlns:maps="clr-namespace:Microsoft.Maui.Controls.Maps;assembly=Microsoft.Maui.Controls.Maps",并使用 <maps:Map ... />,不要直接写 <Map />。
  • Android:Google Maps API key 必须放在 AndroidManifest.xml 的 <application> 内,形如 <meta-data android:name="com.google.android.geo.API_KEY" android:value="YOUR_GOOGLE_MAPS_KEY" />;还需 Google Play Services 版本 meta-data,API 30+ 需为 geo scheme 添加 <queries>。
  • iOS / Mac Catalyst:需在 Info.plist 加 NSLocationWhenInUseUsageDescription,否则定位权限会被直接拒绝且无提示。
  • Windows:无原生支持,须加 CommunityToolkit.Maui.Maps 与 Bing key,使用条件包引用和 #if WINDOWS 配置。

限制与注意:Android 缺少或错误密钥会导致地图空白;已有用户位置点但未授权定位则位置点不显示;频繁调用 MoveToRegion() 会触发动画,应由数据变化去抖动;可用 MoveToRegion() 设置初始区域以避免默认全球视图缩放动画。具体安装命令、价格等信息暂未提供。