Skip to content

原生地图 Map ​

Map 在仪表里显示真实的原生地图。CapDrive 负责定位、坐标显示转换、地图实例与相机更新。你可以配置跟随方式、样式、路线和偏移。

iOS 原生截图
应用渲染的位置地图,标题与定位精度叠放在地图上应用渲染的位置地图,标题与定位精度叠放在地图上,深色模式

最简单的用法 ​

jsx
function main() {
  return <CardContent title="当前位置" fulled={true} headerBlurColor="clear">
    <Map width="fill" height="fill"/>
  </CardContent>;
}

相机与外观 ​

属性值 / 默认说明
showUserLocation布尔值,默认 true是否显示定位点,不决定是否跟随
followModeMapFollowMode.userLocation / .latestData默认跟随系统地图当前位置;另可跟随当前数据
position"current" 或 {latitude, longitude}固定坐标优先于跟随模式
regionPixelOffset[x, y],默认 [0, 0]以屏幕逻辑点移动可视区域中心
headingPolicyMapHeadingPolicy.northUp / .vehicle / .path北朝上、车辆方向或路线方向
appearanceMapAppearance.automatic / .light / .dark跟随 App 或固定主题
mapStyleMapStyle.standard / .satellite / .hybrid标准、卫星、混合
pitch度,默认 0地图俯仰

地图区域大小使用内部的固定地理尺度,没有公开的 distance 属性。不要把普通网页地图库的缩放参数复制进来。

跟随系统位置与跟随数据 ​

jsx
<Map followMode={MapFollowMode.userLocation}/>
<Map followMode={MapFollowMode.latestData} showUserLocation={false}/>

隐藏定位点仍然可以跟随。latestData 在数据或显示坐标转换尚不可用时,会回退到当前系统地图位置。固定 position 则覆盖跟随:

jsx
<Map position={{latitude: 31.2304, longitude: 121.4737}}
  headingPolicy={MapHeadingPolicy.northUp}/>

固定经纬度和路线坐标按 WGS-84 提供,显示时由 CapDrive 处理所在地区要求的转换;不要在源码里重复转换。

区域偏移的方向 ​

regionPixelOffset 移动的是可视区域中心,不是直接把定位点拖到某个屏幕位置。

  • 正 X:可视区域中心向右,目标点看起来向左。
  • 正 Y:可视区域中心向下,目标点看起来向上。
  • [0, -40]:让目标点在卡片里相对向下,方便为顶部标题留空间。

偏移使用与卡片尺寸相同的逻辑点单位,会换算到固定地图视口中。

绘制路线 ​

属性说明
pathWGS-84 坐标数组;用 null 分隔不连续段
pathStyleMapPathStyle.normal 或 .arrow
pathWidth主路线宽度,默认 4 点
pathColor路线颜色
pathOutlineWidth每侧轮廓宽度,默认 1;0 为关闭
pathOutlineColor路线轮廓色
jsx
<Map path={[
  {latitude: 31.2304, longitude: 121.4737},
  {latitude: 31.2310, longitude: 121.4742},
  null,
  {latitude: 31.2320, longitude: 121.4750}
]} pathStyle={MapPathStyle.arrow} pathColor={$env.accent}/>

$data.history 只有最近 30 秒,不是完整行程轨迹。不要把短窗口路线标成“完整行程路线”。

支持与不支持的叠加 ​

可以使用布局、二维 Transform、透明度、圆角和几何裁切。原生 Map 不能放在像素滤镜、alpha Mask 或 RepeatedLayout 的子树里。

需要渐变模糊时,把材质和遮罩作为地图之上的独立兄弟节点,参见地图与渐变材质。地图保持原生实例,不应通过不断更换随机 key 强制重建。