app开发定制uni-app 中实现位置授权以及打开地图选择位置功能

app开发定制最近在项目中遇到一个app开发定制要用户授权位置且可以app开发定制用户自己选择位置的功能,app开发定制看起来好像很难,其实并不难,我在网上看了一些优秀博主的博客,只要跟着步骤一步步来就能实现,下面是我在实现该功能后做的一次总结,希望能帮到更多的小伙伴~

一、实现位置授权功能

实现的效果图:

实现步骤:

1. 登录获取AppID(用自己的小程序账号登录):

[开发 ->开发设置 -> 复制AppID]

2. 注册并登录获取key:

 [控制台->我的应用->创建应用->填写信息->添加Key]

 

注:橘色框中填写刚刚获取到的 APPID 

3. 下载微信小程序 JavaScriptSDK :

4. 将下载的压缩包解压放入项目静态文件夹中

 5. 开始编写代码:进行 Vuex 配置,在 store 的 index.js 文件中写如下代码

 [其中用到的 Key 值就是上面在腾讯地图 api 获取的 key]

  1. import Vue from 'vue'
  2. import Vuex from 'vuex'
  3. // 引入腾讯地图jssdk文件
  4. import QQMapWX from "../static/js/qqmap-wx-jssdk.min.js"
  5. Vue.use(Vuex)
  6. const store = new Vuex.Store({
  7. state: {
  8. // 默认城市
  9. city: '北京市'
  10. },
  11. mutations:{
  12. newCityFun (state, newCity) {
  13. state.city = newCity
  14. console.log(state.city)
  15. }
  16. },
  17. actions: {
  18. getCity(context) {
  19. // 向用户发起授权请求,弹框提示
  20. uni.authorize({
  21. // 获取用户定位信息
  22. scope: "scope.userLocation",
  23. // 用户同意授权执行
  24. success(){
  25. // 引入腾讯地图api
  26. // 实例化API核心类
  27. let qqmapsdk = new QQMapWX({
  28. // 填写自己的Key值,这个值是与AppID绑定的
  29. key: 'H7KBZ-5KOKU-ZDSVY-2APXY-AP24E-HUB6Q'
  30. });
  31. //获取位置信息
  32. uni.getLocation({
  33. type: 'gcj02',
  34. success: function (res) {
  35. console.log('当前位置的经度:' + res.longitude)
  36. console.log('当前位置的纬度:' + res.latitude)
  37. // 逆地址解析方法
  38. qqmapsdk.reverseGeocoder({
  39. location: {
  40. latitude: res.latitude,
  41. longitude: res.longitude
  42. },
  43. success(res) {
  44. var newCity = ''
  45. // 取到用户的定位城市,赋值传递出去
  46. newCity = res.result.address_component.city
  47. context.commit('newCityFun',newCity)
  48. },
  49. fail(res){
  50. console.log(res)
  51. }
  52. })
  53. }
  54. })
  55. },
  56. // 若用户不同意授权,弹框提示
  57. fail(res){
  58. // 这里是封装了一个提示框方法
  59. uni.$showMsg('注意:需要获取您的定位授权,否则部分功能将无法使用')
  60. }
  61. })
  62. }
  63. },
  64. })
  65. export default store

 6. 在需要的页面引入使用:

  1. <template>
  2. <view>
  3. <view class="address">
  4. <span>{{newCity}}</span>
  5. </view>
  6. </view>
  7. </template>
  8. <script>
  9. export default {
  10. data() {
  11. return {
  12. };
  13. },
  14. onReady(){
  15. //页面加载完调用获取地址权限
  16. this.$store.dispatch('getCity')
  17. },
  18. computed:{
  19. //授权后获取到的当前位置(重庆市)
  20. newCity(){
  21. return this.$store.state.city
  22. }
  23. },
  24. }
  25. </script>

二、打开地图选择位置功能

实现的效果:

 

实现代码:

  1. <template>
  2. <view>
  3. <view class="address" @click="goMap">
  4. <uni-icons type="location-filled" size="25"></uni-icons>
  5. <span>{{location}}</span>
  6. <uni-icons type="bottom" size="18"></uni-icons>
  7. </view>
  8. </view>
  9. </template>
  10. <script>
  11. export default {
  12. data() {
  13. return {
  14. location:'重庆市'
  15. };
  16. },
  17. methods:{
  18. goMap(){
  19. const that = this
  20. // uniapp 需要先调取用户授权请求询问用户是否授权
  21. uni.authorize({
  22. scope:'scope.userLocation',
  23. success(res){
  24. uni.chooseLocation({
  25. success:function(res){
  26. // console.log('位置名称:' + res.name);
  27. // console.log('详细地址:' + res.address);
  28. that.location = res.name;
  29. }
  30. })
  31. },
  32. fail(err){
  33. uni.$showMsg('获取位置失败!')
  34. }
  35. })
  36. }
  37. }
  38. }
  39. </script>
  40. <style lang="scss">
  41. .address {
  42. padding: 0 5px;
  43. }
  44. </style>

参考文档:

  • uni.authorize:

  • uni.chooseLocation(OBJECT):

注意:要勾选位置接口

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发