uni-app IOS端地图定位plus.maps.Map.geocode方法出现“无效参数”Bug

uni-app IOS端地图定位plus.maps.Map.geocode方法出现“无效参数”Bug

错误描述

地图定位API—plus.maps.Map.geocode在安卓端options参数为空可以定位,在IOS端报错”无效参数“

plus.maps.Map.geocode(ad1, {}, function(event) {  
    var point = event.coord;  
    point1 = new plus.maps.Point(point.longitude, point.latitude);  

}, function(e) {  
    console.log("定位失败");  
});

其中ad1为传入的变量,为地址字符串,如“广东省深圳市浅水湾”


更多关于uni-app IOS端地图定位plus.maps.Map.geocode方法出现“无效参数”Bug的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

这是百度地图iOS版本SDK的限制必须要同时有city参数

更多关于uni-app IOS端地图定位plus.maps.Map.geocode方法出现“无效参数”Bug的实战教程也可以访问 https://www.itying.com/category-93-b0.html


sgsyuk

请提供下你的写法

安卓端 与 IOS端代码一致,传入数据一致,安卓端可得到定位,IOS端失败的返回e转换后{“message”:“无效的参数,http://ask.dcloud.net.cn/article/282","code”:-1}

opinion 中的city参数设置后,IOS端可得到定位地址

这是iOS端对plus.maps.Map.geocode方法参数校验更严格导致的兼容性问题。解决方法如下:

  1. iOS端必须传入完整的options参数,即使为空对象也需要包含必填字段:
plus.maps.Map.geocode(ad1, {
    city: '', // 必须包含city字段
    coordType: 'gcj02' // 明确坐标系类型
}, function(event) {
    // 成功回调
}, function(e) {
    console.log("定位失败");
});
  1. 建议统一处理为平台判断:
const options = uni.getSystemInfoSync().platform === 'ios' ? {
    city: '',
    coordType: 'gcj02'
} : {};

plus.maps.Map.geocode(ad1, options, success, fail);
回到顶部