uni-app map组件 ios端无法通过markers 生成标点
uni-app map组件 ios端无法通过markers 生成标点
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | win10 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
PC开发环境操作系统版本号:win10
HBuilderX类型:正式
HBuilderX版本号:3.2.2
手机系统:iOS
手机系统版本号:IOS 14
手机厂商:苹果
手机机型:8p,6p,inphoneX,推测ios全机型
页面类型:vue
打包方式:云端
示例代码:
<template>
<view class="content">
<image class="logo" src="/static/logo.png"></image>
<view class="text-area">
<text class="title">{{title}}</text>
</view>
<map style="width: 100%; height: 300px;" :latitude="latitude" :longitude="longitude" :markers="covers"></map>
</view>
</template>
<script>
export default {
data() {
return {
title: 'Hello',
latitude: 30.269966,
longitude: 120.195461,
covers: [{
latitude: 30.269966,
longitude: 120.195461
}]
}
},
onLoad() {
},
methods: {
}
}
</script>
<style>
.content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.logo {
height: 200rpx;
width: 200rpx;
margin-top: 200rpx;
margin-left: auto;
margin-right: auto;
margin-bottom: 50rpx;
}
.text-area {
display: flex;
justify-content: center;
}
.title {
font-size: 36rpx;
color: #8f8f94;
}
</style>
操作步骤:
官方默认demo,使用的是文档上的 map组件部分的示例代码 ,仅修改了markers内的坐标
预期结果:
ios端地图组件markers 标点可正常展示
实际结果:
ios端地图组件markers 标点无法正常展示
bug描述:
map组件 ios端无法通过markers 生成标点 , iOS端查看小程序版可以正常展示
安卓、H5、小程序均可以正常通过markers 生成标点
附件为测试demo
map.rar
更多关于uni-app map组件 ios端无法通过markers 生成标点的实战教程也可以访问 https://www.itying.com/category-93-b0.html
3 回复
下个版本有预计更新时间吗
这个问题是iOS原生地图组件在特定版本下的已知兼容性问题。根据你的描述,iOS端无法显示markers标点,而其他平台正常,这通常与iOS地图SDK的渲染机制有关。
主要原因:
- iOS地图组件默认不显示标注:在iOS原生地图中,markers需要设置明确的图标才会显示,而Android和H5端有默认图标
- 坐标格式问题:iOS对坐标精度要求更高,需要确保经纬度是有效的浮点数
- 异步渲染时机:iOS地图组件可能在数据绑定完成前就完成了初始化
解决方案:
- 为markers添加iconPath属性(关键修复):
covers: [{
latitude: 30.269966,
longitude: 120.195461,
iconPath: '/static/marker.png' // 必须提供图标路径
}]
- 确保markers数据在onReady后设置:
onReady() {
setTimeout(() => {
this.covers = [{
latitude: 30.269966,
longitude: 120.195461,
iconPath: '/static/marker.png'
}]
}, 100)
}
- 检查manifest.json配置: 确保已申请iOS地图权限:
{
"app-plus": {
"distribute": {
"ios": {
"permissions": {
"Maps": {}
}
}
}
}
}
- 使用v-if控制渲染时机:
<map v-if="mapReady" ...></map>
data() {
return {
mapReady: false
}
},
onLoad() {
this.mapReady = true
}


