微信小程序学习实录6(百度经纬度采集、手动调整精度、H5嵌入小程序、百度地图jsAPI、实时定位、H5更新自动刷新)

news2024/12/23 17:52:27

百度经纬度采集

  • 一、H5页面开发
    • 1.手机端外部JS库
    • 2.地图容器
    • 3.数据表单
    • 4.地图加载
    • 5.回调封装函数+自动定位
  • 二、微信小程序核心代码
    • 1.lnglat.wxml
    • 2.lnglat.js
    • 3.lnglat.json
  • 三、版本发布遇见的问题

在这里插入图片描述

一、H5页面开发

1.手机端外部JS库

  • viewport,手机端的适配;
  • layui,手机端界面UI;
  • jweixin-1.6.0,H5与微信小程序通信的API接口文件
    <meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
    <script type="text/javascript" src="static/js/jquery.2.14.js"></script>
    <!--layui封装库-->
    <link rel="stylesheet" href="static/layui/css/layui.css">
    <script type="text/javascript" src="static/layui/layui.js"></script>
    <!--微信小程序API-->
    <script src="//res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>

2.地图容器

 <div class="layui-card">
    <div id="map" style="width: 100%;height: 300px;"></div>
 </div>

3.数据表单

<div class="layui-card">
            <div class="layui-card-header" style="text-align: center;font-weight: bold;">说明:拖动红色标注可调整经纬度精度</div>
            <div class="layui-card-body">
                <div class="layui-form-item">
                    <label for="province" class="layui-form-label">省份<span class="x-red">*</span></label>
                    <div class="layui-input-block"><input type="text" id="province" name="province" class="layui-input"></div>
                </div>
                <div class="layui-form-item">
                    <label for="city" class="layui-form-label">地市<span class="x-red">*</span></label>
                    <div class="layui-input-block"><input type="text" id="city" name="city" class="layui-input"></div>
                </div>
                <div class="layui-form-item">
                    <label for="ccountry" class="layui-form-label">区县 <span class="x-red">*</span></label>
                    <div class="layui-input-block"><input type="text" id="ccountry" name="ccountry" class="layui-input"></div>
                </div>
                <div class="layui-form-item">
                    <label for="detailInfo" class="layui-form-label">地址<span class="x-red">*</span></label>
                    <div class="layui-input-block"><input type="text" id="detailInfo" name="detailInfo" class="layui-input"></div>
                </div>
                <div class="layui-form-item">
                    <label for="lnglat" class="layui-form-label">经纬度 <span class="x-red">*</span></label>
                    <div class="layui-input-block"><input type="text" id="lnglat" name="lnglat" class="layui-input"></div>
                </div>
            </div>
        </div>

4.地图加载

    function map_load() {
        var load = document.createElement("script");
        load.src = "//api.map.baidu.com/api?v=3.0&ak=3HGqGo1RHf***&callback=map_init";
        document.body.appendChild(load);
    }

    window.onload = map_load;

5.回调封装函数+自动定位

  • getBdGeo();定位封装函数;
  • marker.addEventListener('dragend', function () {},监听标注事件,手动调整景点
  • getCurrentPosition,加载即自动采集当前位置的经纬度信息和城市地址信息;
 //初始化地图;
    var map;

    function map_init() {
        map = new BMap.Map("map", {enableMapClick: false});
        var point = new BMap.Point(120.199672, 30.331184);
        map.centerAndZoom(point, 17);
        map.enableScrollWheelZoom();

        // 添加定位控件;
        var geolocationControl = new BMap.GeolocationControl();
        map.addControl(geolocationControl);

        //自动定位;
        getBdGeo();

        function getBdGeo() {
            var geolocation = new BMap.Geolocation();
            geolocation.getCurrentPosition(function (r) {
                if (this.getStatus() == BMAP_STATUS_SUCCESS) {
                    map.clearOverlays();
                    map.panTo(r.point);
                    //alert(JSON.stringify(r));
                    $("#province").val(r.address.province);
                    $("#city").val(r.address.city);
                    $("#ccountry").val(r.address.district);
                    $("#detailInfo").val(r.address.street+r.address.street_number);
                    $("#lnglat").val(r.point.lng + "," + r.point.lat)

                    //返回当前中心点;
                    var points = new BMap.Point(r.point.lng, r.point.lat);
                    map.centerAndZoom(points, 17);

                    //添加标注;
                    var marker = new BMap.Marker(points);
                    map.addOverlay(marker);
                    marker.enableDragging();
                    marker.addEventListener('dragend', function () {
                        //console.log(marker.getPosition().lat);
                        $("#lnglat").val(marker.getPosition().lng + "," + marker.getPosition().lat)
                    })
                } else {
                    //定位失败
                    layer.msg('无法获取定位,系统将自动定位,错误码:' + this.getStatus(), {icon: 2, time: 1000}, function () {
                        map.centerAndZoom("杭州", 17); //用城市名设置地图中心点
                    })
                }
            }, function (error) {
                console.log(error);
            }, {
                enableHighAccuracy: true,//是否要求高精度的地理位置信息
                timeout: 1000,//对地理位置信息的获取操作做超时限制,如果再该事件内未获取到地理位置信息,将返回错误
                maximumAge: 0//设置缓存有效时间,在该时间段内,获取的地理位置信息还是设置此时间段之前的那次获得的信息,超过这段时间缓存的位置信息会被废弃
            });
        }
    }

二、微信小程序核心代码

1.lnglat.wxml

通过web-view 组件直接嵌入H5地址。

  • https://test.com/,必须完成备案,必须在微信小程序后台绑定业务域名;
  • 小程序内使用web-view组件嵌套H5页面,当H5页面更换了内容后,小程序里的h5页面不更新的处理方案:增加时间戳?timestamp={{timestamp}}
<web-view src="https://test.com/data/lnglat.html?timestamp={{timestamp}}"></web-view>

2.lnglat.js

    /**
     * 页面的初始数据
     */
    data: {
        timestamp: '${new Date().getTime()}'
    },

3.lnglat.json

导航栏设置

{
    "usingComponents": {},
    "navigationBarTitleText": "漏刻有时地理信息",
    "navigationBarBackgroundColor": "#16baaa",
    "navigationBarTextStyle": "white"
}

三、版本发布遇见的问题

版本发布过程中,某些组件或API需要在app.json中配置或者提前申请,按照发布时的提醒,逐步操作即可。
在这里插入图片描述

@漏刻有时

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【软考数据库】第九章 非关系型数据库NOSQL

目录 9.1 概述 9.2 理论基础 9.3 分区方法 9.4 存储分布 9.5 查询模型 9.6 存储模式 前言&#xff1a; 笔记来自《文老师软考数据库》教材精讲&#xff0c;精讲视频在b站&#xff0c;某宝都可以找到&#xff0c;个人感觉通俗易懂。 9.1 概述 传统的关系数据库在应付Web …

Listener监听器,实现一个显示在线用户人数

Listener监听器&#xff0c;实现一个显示在线用户人数 每博一文案 关于后半身&#xff0c;脾气越温&#xff0c;福报越深。 师傅说&#xff1a;惜命最好的方式不是养生&#xff0c;而是管好自己的情绪。 坏毛病都是惯出来的&#xff0c;但好脾气都是磨出来的&#xff0c;与人生…

《小钊记》项目启动前期工作相关记录:VUE、powerdesigner建模、虚拟机密码重置、代码生成

目录 VUE镜像基本命令vue 不是内部或外部命令路径配置路由 powerdesigner 建模栏位添加注释id设置自增导出sql 虚拟机root密码重置&#xff08;centos7&#xff09;生成代码工具安装EasyCode插件连接数据库生成代码可以自定义模板复制现有的模板&#xff0c;在其基础上进行改造…

MathType7简体中文版数学公式编辑器下载安装教程

MathType一款专业的数学公式编辑器&#xff0c;理科生专用的必备工具&#xff0c;可应用于教育教学、科研机构、工程学、论文写作、期刊排版、编辑理科试卷等领域。2018年2月&#xff0c;MathType 7简体中文版正式发布&#xff0c;给用户带来全新的体验。MathType 是Windows和M…

二分查找的两种形式(C++实现)

现在有一个这样的问题需要求解 题目要求&#xff1a;给定一个n个元素的&#xff08;升序&#xff09;整型数组nums和一个目标值target&#xff0c;写一个函数搜索nums中的target&#xff0c;如果目标值存在返回下标&#xff0c;否则返回-1 示例 输入: nums [-1,0,3,5,9,12] …

解密银行客户经理展业利器系列一:商机共享、创收增长

2023年银行业面临存款、贷款、利润三大变局&#xff0c;与此同时&#xff0c;商业银行的数字化转型正延展至前台建设&#xff0c;期望通过科技手段布局应对&#xff0c;数字化重装身处一线的客户经理&#xff0c;带动单位时间创收提升&#xff0c;更有力地支撑银行业务战略发展…

数字设计小思 - 谈谈复位那些事

写在前面 本系列整理数字系统设计的相关知识体系架构&#xff0c;为了方便后续自己查阅与求职准备。在FPGA和ASIC设计中&#xff0c;对于复位这个问题可以算是老生常谈了&#xff0c;但是也是最容易忽略的点。本文结合FPGA的相关示例&#xff0c;再谈一谈复位。 &#xff08;本…

带着Java基础对比学习C#基本语法

文章目录 一.引包二.构造函数三.析构函数四.C#数据类型1.值类型2.引用类型分类 五.加框(boxing)和消框(unboxing&#xff09;六.运算符七.控制语句八.类的继承九.方法参数的种类十. 操作符重载十一.this关键字十二.类的多态十三.抽象类和抽象方法十四.密封类和密封方法十五.接口…

Web3中文|乱花渐欲meme人眼,BRC-20总市值逼近10亿美元

现在的Web3加密市场&#xff0c;用“乱花渐欲meme人眼”来形容再合适不过了。 何为meme&#xff1f; “meme”这个词大概很多人都不知道如何正确发音&#xff0c;并且一看到它就会和狗狗币Dogecoin等联系在一起。那它究竟从何而来呢&#xff1f; Meme&#xff1a;[mi:m]&#x…

算法:迷宫问题

描述 定义一个二维数组 N*M &#xff0c;如 5 5 数组下所示&#xff1a; int maze[5][5] { 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, }; 它表示一个迷宫&#xff0c;其中的1表示墙壁&#xff0c;0表示可以走的路&#xff0c;只能横着走或…

JVM致命错误日志(hs_err_pid.log)分析

当jvm出现致命错误时&#xff0c;会生成一个错误文件 hs_err_pid<pid>.log&#xff0c;其中包括了导致jvm crash的重要信息&#xff0c;可以通过分析该文件定位到导致crash的根源&#xff0c;从而改善以保证系统稳定。当出现crash时&#xff0c;该文件默认会生成到工作目…

vue项目部署后提示用户有新版本

你可能在浏览器见到过上面这种UI&#xff0c;这是在vue项目重新build在服务端部署后&#xff0c;浏览器刷新页面弹出的提示&#xff0c;这时如果用户点击更新就会重载页面&#xff0c;清除之前的缓存获取最新内容。 这是怎样发生的呢&#xff1f;你可能会想到下面的方式&#x…

基于深度学习的美颜SDK技术研究报告

在美颜SDK中&#xff0c;深度学习技术的应用尤为突出。本文将从深度学习技术的角度&#xff0c;分析美颜SDK的实现原理与优化技巧。 一、在美颜SDK中的具体应用 1、人脸检测 深度学习技术可以通过训练神经网络&#xff0c;从而实现高效准确的人脸检测。 2、人脸关键点检测 …

一图看懂 dotenv 模块:从.env文件中读取键值对,并将其设置为环境变量,资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 dotenv 模块&#xff1a;从.env文件中读取键值对&#xff0c;并将其设置为环境变量&#xff0c;资料整理笔记&#xff08;大全&#xff09; 摘要模块图类关系图模块全展开【…

01-数据操作+数据预处理

1.n维数组&#xff0c;也称为张量&#xff08;tensor&#xff09;&#xff1a;tensor和ndarray没有本质区别。tensor是有数学上的严格定义&#xff0c;ndarray是计算机描述的&#xff1b;张量表示一个由数值组成的数组&#xff0c;这个数组可能有多个维度&#xff1b; 无论使用…

线程初探——生产者、消费者模式

线程初探——生产者、消费者模式 文章目录 线程初探——生产者、消费者模式生产者消费者模式结构以及问题解决问题 helllo&#xff0c;大家好&#xff0c;这里是追風者频道。今天我们来聊一聊生产者、消费者模式。后期需要采用该模式来进行协议栈抓包架构的搭建&#xff0c;通过…

电脑ppt录制微课软件哪个好 电脑ppt录制微课的方法

如今线上课程已经逐渐成为线下课程的补充&#xff0c;拓宽知识面&#xff0c;让学生能够学到更多知识。微课是线上课程里比较方便观看的一类&#xff0c;制作起来也很便捷&#xff0c;很多人会直接用ppt来制作微课&#xff0c;简单快速又能传播知识。今天就来分享一下电脑ppt录…

AUTOSAR入门

简介 AUTOSAR&#xff08;AUTomotive Open System ARchitecture&#xff09;是一种汽车软件架构标准&#xff0c;由德国大陆、博世、宝马等汽车及零部件制造商共同发起&#xff0c;拥有广泛的行业参与。其目标是为了解决汽车电子和软件系统日益复杂的问题&#xff0c;提高可重…

思科模拟器 | 访问控制列表ACL实现网段精准隔绝

文章目录 一、ACL工作原理二、ACL分类初步介绍三、标准ACL1、标准ACL的决策过程2、标通配符掩码关键字3、标准ACL网络拓扑4、标准ACL演示5、实战讲解 四、扩展ACL1、基础语法明细2、扩展ACL示例3、扩展ACL网络拓扑4、实战讲解 五、总结与提炼 一、ACL工作原理 ACL&#xff08;A…

大数据任务调度和数据同步组件初探

本文个人博客地址 背景 数据从最原始的状态&#xff0c;可能是一个 excel&#xff0c;一个文本&#xff0c;或者是来自业务数据库的数据&#xff0c;格式各种各样&#xff0c;落地到数据仓库、数据湖中&#xff0c;数据的同步过程 是必不可少的 图片来源 传统的数据同步方式…