博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
支付宝小程序获取位置API没有城市区号的最佳处理方案
阅读量:5236 次
发布时间:2019-06-14

本文共 2102 字,大约阅读时间需要 7 分钟。

 

前言:

需要对城市区号进行判断,但是支付宝小程序提供的my.getLocation() API返回的数据中只有6位的城市行政代码,诸如:深圳(440300),并没有区号(0755),那么怎么办呢?

需求分析:

通常会想到两种方法,一个是调用第三方地图,但这个对接调用就太麻烦了(还得注册账号),另一种就是找插件转换了。

第一种方法就不考虑了,第二种么,百度了下,貌似没有这种插件,鉴于之前做过不少接口文档或这表格数据转换js格式数据或者标签的小工具,想了下原理都差不多,索性自己做了个工具进行转换。

工具可以自己做,但是还需要数据来匹配城市行政编码和区号,那么就需要一份包含全国所有城市行政编码以及区号的文档了。

下载行政区比那吗与城市区号相关的文档:

继续百度,只是看到别人写的示例数据,但是自己写数据不现实啊(也不靠谱)。最后去高德看了下,找到了,网页地址:https://lbs.amap.com/api/javascript-api/download:

下载解压后,是如下所示的电子表格,刚好包含了城市名、行政编码、区号,刚好够用,不多不少。

万事俱备,只欠东风,下面开始写工具,借东风。

工具代码如下:

1  2  3  4      5         
6 7 8 9 10
11
12

13 14

15
16
17
18

生成代码预览

19
    20
  • {
    {item}}
  • 21
22
23
24 25 26 54 59 60

如上,其实上边代码中有点技术含量的也就算是模板字符串了吧,以前都是用数组遍历来实现的,这里一行搞定。如果看不懂,可以按下面方法进行解析:

1                         this.fileData[i] =2                             `${i==0?'[':''}3                                     {4                                         cityName:'${tds[0]}',5                                         code:'${tds[1]}',6                                         cityCode:'${tds[2]}'7                                     }8                             ${i==(this.fileData.length-1)?']':','}`

如上,可以按照js对象的格式进行编写也是可以的,不影响正常编译(强大的模板字符串)

验证转换工具:

打开网页,复制几行数据粘贴到文本域中(一定要三列完整的复制),然后点击转换按钮:

非常完美的完成了excel到json数据的转换,然后就可以对整个电子表格文档进行转换了!

后续优化——解决转换数据过大的问题:

虽然上边成功将电子表格中的数据转换未json格式数据,但是转换之后的数据文件比较大:

这就不太好了,我们需要的只是根据小程序API返回的行政编码查询区号,那么我们就可以对转换数据进行优化,只保留行政编码和区号。

关键代码如下:

this.fileData[i] =`${i==0?'{':''}'${tds[0]}':'${tds[1]}'${i==(this.fileData.length-1)?'}':','}`

如上,将行政编码作为key(唯一性),区号作为value,这样可以直接将整个数据转换成一个对象类型的json数据(数组类型的还得遍历,调用有点麻烦了)。

小程序调用示例:

getCityCodeByCityAdcode(cityAdcode) {        let cityCode = require('../../utils/cityCode')        return cityCode[cityAdcode] || ''    }

 

转载于:https://www.cnblogs.com/xyyt/p/11247180.html

你可能感兴趣的文章
hibernate增删改查
查看>>
计算机网络面试题 系列一
查看>>
BZOJ-1069 [SCOI2007]最大土地面积
查看>>
图解集合5:不正确地使用HashMap引发死循环及元素丢失
查看>>
损失函数与正则项之间的关系和分析
查看>>
【NOIP2015】提高组
查看>>
【原创】TransHost远控程序分析
查看>>
vue.js 解决跨域问题
查看>>
Android的Kotlin秘方(I):OnGlobalLayoutListener
查看>>
纵向扩展与横向扩展
查看>>
为什么要做url encode
查看>>
component和bean区别
查看>>
CAP
查看>>
jquery中attr和prop的区别
查看>>
ORACLE not available如何解决
查看>>
Linux iptables详解(1)
查看>>
boost 同步定时器
查看>>
vue封装element中table组件
查看>>
Shell学习笔记 - 分支语句
查看>>
PAT Basic 1013
查看>>