使用H.service.SearchService无法获取地理编码形状的技术问询
迁移H.service.GeocodingService到SearchService的解决方案
1. 位置形状的获取方案
原H.service.GeocodingService通过additionalData直接返回邮政编码区域形状的逻辑,在H.service.SearchService中需要分两步实现:
- 第一步:调用SearchService的
geocode方法,传入q:${zip}+DEU``作为搜索参数,从返回结果中筛选出类型为postalCode的条目,提取其唯一id(格式类似here:af:postalcode:DExxxxxx)。 - 第二步:调用SearchService的
lookup方法,传入上述id,同时保留additionalData: 'IncludeShapeLevel,postalCode'参数,即可获取对应邮政编码区域的形状数据。
示例代码片段:
// 初始化SearchService实例 const searchService = new H.service.SearchService(platform.getSearchService()); // 第一步:搜索获取邮政编码条目ID searchService.geocode({ q: `${zip}+DEU`, limit: 1 }, (result) => { const postalCodeItem = result.items.find(item => item.resultType === 'postalCode'); if (postalCodeItem) { // 第二步:通过ID查询形状数据 searchService.lookup({ id: postalCodeItem.id, additionalData: 'IncludeShapeLevel,postalCode' }, (lookupResult) => { const shapeData = lookupResult.items[0].shape; // 处理获取到的形状数据 }, (err) => { console.error('查询形状失败:', err); }); } }, (err) => { console.error('地理编码失败:', err); });
2. searchText参数的变更说明
是的,searchText参数在H.service.SearchService中已完全废弃,必须使用q参数作为搜索关键词。新API强制要求请求携带q参数,未传入时会直接返回参数错误,直接将原searchText的参数值转移到q字段即可。
内容的提问来源于stack exchange,提问作者JGarnie
相关产品推荐
相关产品推荐

