联系客服功能+定位功能+图片上传功能

功能一、联系客服

小程序开发的时候都会配备有类似于一个电话的悬浮按钮,比如:

这就是一个联系客服的功能,说白了就是打电话-----调用自己的电话功能进行拨打,具体代码实现

<!-- 点击拨打电话 -->
makePhone: function (e) {
    var that = this;
    var mobile = e.currentTarget.dataset.mobile;  //点击拨打电话 携带的参数
    if (mobile) {  //存在电话号码
        that.makePhoneCall(mobile); //调用拨打功能
    } else {
        app.errorTip(that, '暂无电话~', 2000); //提示框
    }
}
<!-- 调起自己手机的电话拨打功能 -->
makePhoneCall: function (mobile) {
    <!-- 模拟弹窗 -->
    wx.showModal({
    title: '',  //标题
    content: mobile,  //弹窗展示的内容
    confirmText: '拨打',   //确认按钮的提示语
    confirmColor: '#48C23D',   //确认按钮的样式
    success: function (res) {
        if (res.confirm) {  //如果确认则调用手机的电话功能
        <!-- 拨打电话 -->
        wx.makePhoneCall({
            phoneNumber: mobile,   //拨打的电话号码
            success: function () {
                console.log("拨打电话成功!")
            },
            fail: function () {
                console.log("拨打电话失败!")
            }
        })
        }
    }
    })
}

功能二、定位功能 

 第一步:首先要认识三个小程序的 api

        wx.chooseLocation 和 wx.getLocation 和 wx.openLocation

        (1).wx.chooseLocation 用于在小程序中选择地理位置。当用户点击选择位置按钮时,小程序会调起地图选择界面,用户可以在地图上选择一个位置,并可以获取到该位置的经纬度、名称、详细地址等信息。

        (2).wx.getLocation 可以获取用户当前的经纬度信息,并可根据需要获取用户的详细地址、速度等附加信息。使用 wx.getLocation API 可以让小程序在需要的情况下获取用户的地理位置信息,然后根据这些信息来进行相关的操作。

        (3).wx.openLocation 用于在地图上打开指定的位置。通过调用 wx.openLocation API,开发者可以传入经度、纬度、名称、地址等参数来指定一个具体的地理位置,然后微信客户端会打开地图并显示该位置。

所以,三者的区别主要在于:

        1. wx.chooseLocation 是用于选择地理位置的,返回用户选择的位置信息。

        2. wx.getLocation 是用于获取用户当前位置的,返回用户当前位置的信息。

        3.wx.openLocation 用于打开地图显示一个指定的位置,而不是获取用户当前位置或选择位置。它用于在小程序中以地图的形式展示一个固定的地理位置,让用户查看或进一步操作。

        

        需要注意的是,使用 wx.getLocation API,wx..getLocation 需要用户在微信公众平台申请权限,并在 app.json 中进行配置,如下:

"requiredPrivateInfos": [
    "getLocation",
    "chooseLocation"
],

第二步:具体用法

        第一种:打开地图自行选择位置并展示,具体代码如下:

//选择地址
chooseLocation: function () {
    //保存上下文
    var that = this;
    wx.chooseLocation({
        success: (res) => {
            //返回自己选择的经度 纬度 和详细地址信息  
            console.log(res);
            //就向发布动态一样需要将获取到的地理位置信息存储起来
            //展示动态直接渲染
            that.setData({
                curChooseAddress: res.address,
                curChooseLatitude: res.latitude,
                curChooseLongitude: res.longitude
            })
        },
        fail: (res) => {
            //未授权需要先进行授权
            //获取授权过的设置
            wx.getSetting({
                success: (res) => {
                    console.log(res.authSetting['scope.userLocation']);
                    //如果不存在地址授权 则需要进行确认授权
                    if (!res.authSetting['scope.userLocation']) {
                        //方法一:打开设置进行授权
                        wx.openSetting({
                            success: (res) => {
                                res.authSetting = {
                                    "scope.userLocation": true
                                }
                            }
                        })
                        //方法二:弹窗进行授权
                        wx.authorize({
                            scope: 'scope.userLocation',
                            success () {
                                // 用户已经同意小程序使用录音功能,可以再次调用该方法
                                 that.chooseLocation()
                            }
                        })
                    }
                }
            })
        }
    })
}

        第二种:就是获取当前的经纬度,并在地图中显示该位置,具体代码如下:

//打开地图
openMap(){
    wx.getLocation({
        type: 'gcj02', //返回可以用于 wx.openLocation 的经纬度
        success (res) {
            const latitude = res.latitude   //当前位置的经度和纬度
            const longitude = res.longitude
            wx.openLocation({
                //根据经度和纬度打开地图指定位置 
                latitude,
                longitude,
                scale: 18  //尺寸
                address: //地址的详细说明
                name:  //位置名
            }) 
        }
    })
}

功能三、图片上传

 1.点击添加触发点击事件,执行 chooseSingleImage ()

//选择上传图片方式
chooseSingleImage: function (e) {
    var that = this;
    //可以根据 id 保证图片上传唯一性
    var id = e.currentTarget.dataset.id;
    //调用小程序 api 弹出层
    wx.showActionSheet({
        itemList: ['从相册中选择', '拍照'],  //方式
        itemColor: "#333",   //文字颜色
        success: function (res) {
            if (!res.cancel) {   //如果没有点击取消按钮 咋执行该逻辑
                if (res.tapIndex == 0) {  //当前选择的是哪一种方式
                    that.chooseWxImage('album', id) //表示 从相册选择
                } else if (res.tapIndex == 1) {
                    that.chooseWxImage('camera', id) //表示 拍照
                }
            }
        }
    })
},

2.调用 choosWxImage,选择单张图片还是多张

//选择图片数量
chooseWxImage: function (type, id) {
    //保存上下文
    var that = this;
    //小程序 api 
    wx.chooseMedia({   //chooseImage 已经停止维护 
        count: 1,  //可选择的图片数量
        sizeType: ['compressed'],  //压缩图片
        sourceType: [type],
        success: function (res) {
            //返回图片的临时路径
            var temPath = res.tempFilePaths[0];
            that.upload_file(temPath, id);
        }
    })
},

3.上传图片到服务器

// 上传图片到服务器
upload_file: function (temPath, id) {
    var that = this;
    //交互效果 添加弹出框
    wx.showLoading({
        title: '上传中',
    })
    //上传图片 api 
    wx.uploadFile({
        url: '后台接口地址'
        //传递的临时路径
        filePath: temPath,
        name: 'image',  //图片类型
        success: function (res) {
            var data = JSON.parse(res.data);  //这里需要对数据进行转化
            var realpath = '本地域名' + data.data.path;  //拼接真实的图片路径
            //此时可以拿到这个真正的图片路径  进行渲染 展示上传的图片
            that.setData({
                imgUrl: realpath 
            })       
        },
        complete: function () {
            //最后关闭弹出框
            wx.hideLoading();
        }
    });
},

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/322586.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

jmeter--常用插件及服务器监控(14)

一.jmeter插件管理器 下载jmeter插件管理器&#xff1a;plugins-manager.jar 下载plugins-manager.jar并将其放入lib/ext目录&#xff0c;然后重启JMeter。 插件管理界面 打开选项->Plugins Manager&#xff08;界面见下图&#xff09;&#xff0c;“Installed Plugns”…

discord音乐机器人

Discord音乐机器人是一种可以在Discord平台上使用的自动播放音乐的机器人。这些机器人可以连接到各种音乐源&#xff0c;如YouTube、SoundCloud和Spotify等&#xff0c;并根据用户的请求播放音乐。 Discord音乐机器人具有以下特点&#xff1a; 自动播放音乐&#xff1a;Disco…

友思特分享丨高精度彩色3D相机:开启崭新的彩色3D成像时代

来源&#xff1a;友思特 机器视觉与光电 友思特分享丨高精度彩色3D相机&#xff1a;开启崭新的彩色3D成像时代 原文链接&#xff1a;https://mp.weixin.qq.com/s/vPkfA5NizmiZmLiy_jv3Jg 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; 3D成像的新时代 近年来&#…

flutter 文件下载及存储路径

flutter 文件下载及存储路径 前言一、下载进度条二、文件路径二、文件上传总结 前言 日常开发中&#xff0c;经常会遇到下载文件的功能&#xff0c;往往我们在需要保存文件的路径上去调试&#xff0c;比如Android中的路径&#xff0c;有些会报错在SD卡中&#xff0c;但是有些手…

11 双向链表

单链表的局限&#xff1a; 单链表的缺点&#xff1a;逆序访问单链表中的元素耗时大。&#xff08;时间复杂度&#xff1a;O&#xff09; 双向链表的定义 第0个节点【a1】的pre指针为NULL&#xff0c;要注意 插入操作&#xff1a; 删除操作&#xff1a; 初步实现双链表 代码&…

智能制造工业互联网建设方案——青创智通工业物联网

智能制造已经成为工业发展的重要趋势。智能制造系统架构与工业物联网建设方案作为实现智能制造的关键环节&#xff0c;对于推动工业转型升级和提升企业竞争力具有重要意义。青创智通工业物联网重点探讨智能制造系统架构与工业物联网建设方案的核心要素、实施步骤和未来发展方向…

vue-echarts踩坑,本地开发可以渲染echarts图表,线上环境图表渲染不出来

main.js全局注册v-chart组件 import VueECharts from "vue-echarts"; Vue.component("v-chart", VueECharts);在页面中使用 如上图&#xff0c;我开始写的静态数据&#xff0c;在data中定义了chartOption1:{…配置项…}, 在接口数据返回之后&#xff0c;…

AI能否真的取代程序员?

一个Java程序员从接到需求到最终开发完功能的流程大致如下 首先是理解原型图&#xff0c;设计表结构根据表结构编写增删改查代码与前端联调&#xff0c;完成功能开发 那么以上步骤AI能不能完成呢&#xff1f; 让我们试一下&#xff1a; 第一步&#xff0c;使用 AI助手 解析流…

【AI】无人零售和边缘计算

目录 一、什么是边缘计算 1.1 边缘计算的定义 1.2 边缘计算的作用 1.3 边缘计算的关键技术 1.4 边缘计算的应用场景 二、边缘计算在无人零售中的应用 一、什么是边缘计算 1.1 边缘计算的定义 边缘计算&#xff08;Edge Computing&#xff09;是一种分布式计算范式&#…

Android 事件机制探讨(1)

事件的传递主要有三个方法&#xff1a;dispatchTouchEvent(事件分发)、onInterceptTouchEvent(事件拦截)、onTouchEvent(事件消费)。如下图&#xff1a; 仔细看的话&#xff0c;图分为3层&#xff0c;从上往下依次是Activity、ViewGroup、View事件从左上角那个白色箭头开始&…

ssm基于WEB技术的在线商品交易平台的设计+vue论文

在线商品交易平台的设计与实现 摘要 近年来&#xff0c;信息化管理行业的不断兴起&#xff0c;使得人们的日常生活越来越离不开计算机和互联网技术。首先&#xff0c;根据收集到的用户需求分析&#xff0c;对设计系统有一个初步的认识与了解&#xff0c;确定在线商品交易平台的…

芯品荟 | 测亩仪市场调研报告

一、产品简介 1、什么是测亩仪&#xff1f; 测亩仪&#xff0c;又称面积测量仪&#xff0c;采用了卫星定位系统与高精度算法技术原理&#xff0c;可以精准测量出土地、水域的距离、周长、面积等数据的有效工具&#xff0c;被广泛应用于农田、林业、水域、公路、机械作业、野外…

OpenAIOps社区线上宣讲会圆满召开,期待您的加入!

2024年1月12日“OpenAIOps社区”线上宣讲会圆满召开&#xff0c;群体智慧协同创新社区的创立为AIOps领域未来发展注入了活力。OpenAIOps社区是一个AIOps开源社区及创新平台&#xff0c;由中国计算机学会(CCF)、清华大学、南开大学、中科院、国防科大、必示科技等单位共同发起&a…

智慧公厕:颠覆传统公共厕所管理的未来之路

公共卫生设施一直是城市管理中的重要环节&#xff0c;而智慧公厕作为一种全新的公用卫生设施&#xff0c;以其融合了物联网、大数据、云计算等新型信息技术的特点&#xff0c;引起了人们的广泛关注。通过智能化手段的管理和服务&#xff0c;智慧公厕不仅解决了传统公厕中存在的…

20240111在ubuntu20.04.6下解压缩RAR格式的压缩包

20240111在ubuntu20.04.6下解压缩RAR格式的压缩包 2024/1/11 18:25 百度搜搜&#xff1a;ubuntu rar文件怎么解压 rootrootrootroot-X99-Turbo:~/temp$ ll total 2916 drwx------ 3 rootroot rootroot 4096 1月 11 18:28 ./ drwxr-xr-x 25 rootroot rootroot 4096 1月…

C语言多线程基础(pthread)

1.线程和进程的概念 线程&#xff1a;进程中的一个实体&#xff0c;是CPU调度和分派的基本单位。可以与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程&#xff0c;同一进程中的多个线程之间可以并发执行&#xff0c;线程在运行中呈现间断…

MYSQL的事务隔离

本章概览 mysql是一个支持多引擎的系统&#xff0c;并不是所有引擎都支持事务&#xff0c;本篇以innodb为例解析mysql在事务支持的实现。提到事务一定会想到ACID(Atomicity、Consistency、Isolation、Durability&#xff0c;即原子性、一致性、隔离性、持久性)&#xff0c;今天…

Open CV 图像处理基础:(一)Open CV 在windows环境初始化和 Java 动态库加载方式介绍

Open CV 在windows环境初始化和 Java 动态库加载方式介绍 目录 Open CV 在windows环境初始化和 Java 动态库加载方式介绍前言OpenCV安装opencv-4.4.0下载安装 加载opencv-4.4.0.jar包jar包引入mavn-init.cmdjar包装载到本地maven仓库pom.xml加载动态库 加载动态库opencv_java44…

如何用Docker部署Nacos服务并结合内网穿透实现公网访问管理界面?

文章目录 1. Docker 运行Nacos2. 本地访问Nacos3. Linux安装Cpolar4. 配置Nacos UI界面公网地址5. 远程访问 Nacos UI界面6. 固定Nacos UI界面公网地址7. 固定地址访问Plik Nacos是阿里开放的一款中间件,也是一款服务注册中心&#xff0c;它主要提供三种功能&#xff1a;持久化…

App加固:不同类型和费用对比

文章目录 [TOC]引言应用程序加固是什么不同类型[App加固](https://www.ipaguard.com/)的费用对比基础加固高级加固云加固 白嫖的混淆加密工具](https://www.ipaguard.com/)-[ipaguard总结参考资料 引言 在当前移动应用市场中&#xff0c;安全性已经成为一个非常重要的话题。为…