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
方法参数校验更严格导致的兼容性问题。解决方法如下:
- iOS端必须传入完整的options参数,即使为空对象也需要包含必填字段:
plus.maps.Map.geocode(ad1, {
city: '', // 必须包含city字段
coordType: 'gcj02' // 明确坐标系类型
}, function(event) {
// 成功回调
}, function(e) {
console.log("定位失败");
});
- 建议统一处理为平台判断:
const options = uni.getSystemInfoSync().platform === 'ios' ? {
city: '',
coordType: 'gcj02'
} : {};
plus.maps.Map.geocode(ad1, options, success, fail);