地图POI搜索返回的坐标字段为什么是空的?
在用高德地图API做POI搜索时,发现返回的poi列表里location字段全是空对象,但其他信息如名称地址都有数据。我按文档写了参数,ak也验证过有效:
amap.service('AMap.PlaceSearch').then(PlaceSearch => {
const search = new PlaceSearch({city: '310000'});
search.search('咖啡店', (status, data) => {
console.log(data.pois[0].name); // 正常输出名称
console.log(data.pois[0].location); // 输出空对象 {}
});
});
已经尝试过把参数类型从字符串改数字,调整搜索关键词,甚至清空浏览器缓存,但坐标始终拿不到。这是怎么回事?
你可以先检查下控制台有没有类似“Insufficient privileges”这样的报错信息,这通常就是权限不足导致的。解决办法是去高德开放平台的开发者后台,找到你的应用,看看有没有勾选“高级定位服务”或者“逆地理编码”这些选项。如果没有就加上,然后重新获取ak。
另外代码本身也有个小问题,location字段其实是个对象,你需要通过
lng和lat属性来获取具体的经纬度值。我建议你调整下代码:最后提醒一句,高德API的权限审核有时候挺慢的,提交申请后耐心等等吧。如果还是不行,可以试着换个关键词或者区域测试一下,排除其他可能性。
extensions: 'all'才能拿到location里的坐标数据。把初始化PlaceSearch的参数改成这样: