前言

全国行政区划检索功能, 由于高德和百度也没有提供一个比较完美的解决方案, 因此使用了腾讯地图iOS SDK内部封装的Web接口来实现. 行政区划共分为三个等级, 省级/市级/区级, 对于北京市和天津市这样的城市, 通常直接认为是省级, 并直接以同样的内容来填充市级. 但是SDK内部并没有提供这样的填充, 因此需要自行再省级里面将其复制到市级。

使用场景

给用户提供选择行政区域和居住地等功能的行政区划选择器。

准备

腾讯地图3D SDK

行政区划检索

核心代码

- (void)searchWithDistrictSearchOption:(QMSDistrictBaseSearchOption *)districtSearchOption didRecevieResult:(QMSDistrictSearchResult *)districtSearchResult {_provinceModelArray = [NSMutableArray array];NSArray *provinceArray = districtSearchResult.result[0];NSArray *cityArray = districtSearchResult.result[1];NSArray *districtArray = districtSearchResult.result[2];for (QMSDistrictData *provinceData in provinceArray) {ProvinceModel *provinceModel = [ProvinceModel provinceWithDistrictData:provinceData];// 取出市级NSMutableArray *cityModelArray = [NSMutableArray array];NSArray<NSNumber *> *cidx = provinceData.cidx;QMSDistrictData *cityData = cityArray[cidx.firstObject.intValue];// 判断二级结构后面是否还有三级结构// 如果没有, 则直接使用一级结构作为二级结构, 二级结构作为三级结构, 如: 北京-北京-东城区if (cityData.cidx == nil) {CityModel *cityModel = [CityModel cityWithDistrictData:provinceData];[cityModelArray addObject:cityModel];// 设置三级结构NSMutableArray *districtModelArray = [NSMutableArray array];int firstIndex = provinceData.cidx.firstObject.intValue;int lastIndex = provinceData.cidx.lastObject.intValue;// 将二级结构设置为三级结构for (int i = firstIndex; i < lastIndex + 1; i++) {QMSDistrictData *districData = cityArray[i];DistrictModel *districtModel = [DistrictModel districtWithDistrictData:districData];[districtModelArray addObject:districtModel];}cityModel.districts = districtModelArray;provinceModel.cities = cityModelArray;} else {// 填充二级结构int cityFirstIndex = provinceData.cidx.firstObject.intValue;int cityLastIndex = provinceData.cidx.lastObject.intValue;for (int i = cityFirstIndex; i < cityLastIndex + 1; i++) {QMSDistrictData *cityData = cityArray[i];CityModel *cityModel = [CityModel cityWithDistrictData:cityData];[cityModelArray addObject:cityModel];// 设置三级结构int districtFirstIndex = cityData.cidx.firstObject.intValue;int districtLastIndex = cityData.cidx.lastObject.intValue;NSMutableArray *districtModelArray = [NSMutableArray array];for (int i = districtFirstIndex; i < districtLastIndex + 1; i++) {QMSDistrictData *districtData = districtArray[i];DistrictModel *districtModel = [DistrictModel districtWithDistrictData:districtData];[districtModelArray addObject:districtModel];}cityModel.districts = districtModelArray;}provinceModel.cities = cityModelArray;}[_provinceModelArray addObject:provinceModel];}_selectProvinceModel = _provinceModelArray[0];_selectCityModel = _selectProvinceModel.cities[0];_selectDistrictModel = _selectCityModel.districts[0];[self setupPickerView];
}

以上就是核心代码,由于需要解析返回的行政区划的内容, 并且数据共有省市区三个数组, 对于北京市这样的特殊例子并没有第三个数组, 因此需要额外的步骤区拆分, 直接看部分代码可能有一些晦涩, 因此建议同学们可以直接下载Demo尝试。

示例:展示行政区划Picker

点评

该功能目前还有些许不足之处,比如:

1、省市区三个行政区划如果要同时获取的话, 由于API返回的是三个数组, 因此自己去处理有些麻烦。

2、直辖市这样的城市, 由于不存在省份, 相比其他省份少了一个层级, 而API也没有直接提供占位数据, 建议腾讯官方可以改进一下。

链接

感兴趣的同学可以在码云中下载Demo尝试一下。

作者:面糊

链接:https://www.jianshu.com/p/40044b625c63

来源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

腾讯地图获取全国行政区划检索列表Demo相关推荐

  1. 腾讯位置服务地图SDK实现获取全国行政区划检索列表

    前言 全国行政区划检索功能, 由于高德和百度也没有提供一个比较完美的解决方案, 因此使用了腾讯地图iOS SDK内部封装的Web接口来实现. 行政区划共分为三个等级, 省级/市级/区级, 对于北京市和 ...

  2. 手机端或PC端利用高德地图和腾讯地图获取用户当前位置信息

    目录 一.简介 二.高德地图 三.腾讯地图 四.总结 一.简介 最近在项目中,有需要使用到获取用户当前地理位置信息的功能,获取当前用户位置保存到数据库中的场景,并且需要支持多种地图定位方式,我这里采用 ...

  3. Java从高德地图获取全国地铁站数据

    Java从高德地图获取全国地铁站数据. 数据来源(高德地图):http://map.amap.com/subway/index.html?&4401 采集代码 /*** 从高德地图地铁线路同步 ...

  4. php 获取key的位置,PHP使用腾讯地图获取指定地址坐标:创建key(图文+视频)

    本篇文章主要给大家介绍PHP用腾讯地图获取指定地址坐标之创建key的步骤方法. 我们在项目开发过程中,有时可能会遇到用腾讯或百度地图接口获取相关数据的需求.那么对于PHP初学者来说,可能对相关知识不太 ...

  5. uni-app 写H5 小程序 使用腾讯地图获取地理位置

    uni-app 写公众号 小程序 使用腾讯地图获取地理位置 1.首先需要在腾讯地图里面申请key 2.下载微信小程序JavaScriptSDK,微信小程序 JavaScriptSDK v1.1   J ...

  6. vue使用腾讯地图获取经纬度和逆解析获取详细地址

    vue使用腾讯地图获取经纬度和逆解析获取详细地址 示例 必须在腾讯api中申请自己的key 打开这个webservice用来逆解析详细地址 下面是代码 1 , html创建放地图的容器 <div ...

  7. 腾讯地图获取用户Ip地址

    腾讯地图获取用户IP地址## <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js&quo ...

  8. [小o地图-数据] - 获取全国行政区划轮廓数据(上)

    简介 小O地图是一款专业的互联网地图数据挖掘.分析.处理及图表软件. 小O地图提供全国行政区数据获取功能,内容包括行政区名称.编码.区号.中心坐标.轮廓坐标等,并支持导出CSV.ShapeFile.A ...

  9. 【Android App】利用腾讯地图获取地点信息和规划导航线路讲解及实战(附源码和演示视频 超详细必看)

    需要源码请点赞关注收藏后评论区留言~~~ 一.获取地点信息 至于如何集成腾讯地图和调用腾讯地图接口此处不再赘述,有需要请参见我之前的博客 腾讯地图用来搜索POI地点的工具是TencentSearch, ...

  10. 【微信小程序】调用腾讯地图获取当前城市定位

    前导知识 1. 腾讯地图SDK接入 1. 申请开发者密钥 打开网址 https://lbs.qq.com/console/key.html,申请密钥,填写信息单击"提交"按钮,弹出 ...

最新文章

  1. stitching detail输出的dot图含义
  2. 《ES6标准入门》49~68Page 数值的拓展 数组的拓展
  3. 面试必备算法题集之「动态规划」Ⅰ
  4. VTK:Math之MatrixInverse
  5. SpringBoot_web开发-thymeleaf语法
  6. java连接打印机访问被拒绝_java – 尝试访问spring security中的登录页面时访问被拒绝的异常...
  7. QJsonObject与QString的相互转换(处理了中文乱码)
  8. SQL Server 2012 完全安装
  9. 像中文的罗马音字体复制_罗马音字体复制下载
  10. html5广告的版式设计,页面版式设计
  11. 浏览器获取图片出现跨域问题
  12. 捕获Chrome浏览器全屏退出事件
  13. Android 如何发送地理位置消息
  14. 复制英文和中文PDF文字到word并去除回车符
  15. React-Native 知识点小结
  16. SSL证书的加密算法都有哪些?
  17. Qt5之qrc资源文件
  18. Unreal 后期处理材质范例
  19. 好用的ROS开发软件(持续更新~)
  20. 稳压二极管主要参数及选型(及常见电阻封装的可过的电流)

热门文章

  1. android手机模拟鼠标控制pc,利用Android手机仿真PC鼠标的设计与实现
  2. Java校园语音通信软件开发
  3. 有哪些不错的数学、物理类的「闲书」?
  4. JDK动态代理(通俗白话)
  5. cass连接复合线命令 lisp_南方CASS和AutoCAD快捷命令大全
  6. 翻译python代码的软件_使用Python3中的gettext模块翻译Python源码以支持多语言
  7. 考研强化阶段选书怎么选
  8. asc和desc全称_MySQL数据排序asc、desc
  9. Linux基础知识总结
  10. macOS Big Sur中雷蛇鼠标驱动 雷云2.0无法正常使用解决办法与mac雷蛇卸载