微信小程序学习实录5(H5嵌入小程序、map组件、地图调起功能、腾讯百度高德导航页、返回web-view页)

news2024/11/14 0:16:03

H5嵌入微信小程序

  • 一、H5页面地图
    • 1.H5地图加载
    • 2.标注事件
  • 二、H5返回微信小程序
    • 1.H5页面核心代码
    • 2.微信小程序接收传参核心代码
  • 三、开发中遇见的坑
    • 1.wx.openLocation调起地图后需要点击两次返回才到web-view页面
    • 2.H5无法调用百度定位new BMap.Geolocation对象
    • 3.安卓某些机型无法从H5跳转到小程序

在这里插入图片描述

一、H5页面地图

在这里插入图片描述

1.H5地图加载

  • 创建容器
<div id="lock_map"></div>
  • 地图家长
var map = new BMap.Map("lock_map");
    var point = new BMap.Point(120.199672, 30.331184);
    map.centerAndZoom(point, 16);
    map.enableScrollWheelZoom(true);

    // 添加定位控件;
    var geolocationControl = new BMap.GeolocationControl({
        anchor: BMAP_ANCHOR_BOTTOM_RIGHT
    });

    geolocationControl.addEventListener("locationSuccess", function (e) {
        getGEO();
    });
    map.addControl(geolocationControl);

    //getGEO();

    //定位;
    function getGEO() {
        var geolocation = new BMap.Geolocation();
        geolocation.getCurrentPosition(function (r) {
            if (this.getStatus() == BMAP_STATUS_SUCCESS) {
                map.clearOverlays();
                //返回当前中心点;
                map.panTo(r.point);
                map.centerAndZoom(r.point, 17);

                //获取半径;
                var radiusLength = 3;
                var keyword = '美食';
                console.log(keyword)

                var x = r.point.lng;
                var y = r.point.lat;
                var newPoint = new BMap.Point(x, y);
                addMaker(newPoint);//标注中心;
                addCircle(newPoint, radiusLength);//范围;
                searchMaker(newPoint, keyword, x, y);//周边标注;

            } else {
                console.log('failed' + this.getStatus());
            }
        }, function (error) {
            console.log(error);
        }, {
            enableHighAccuracy: true,
            timeout: 1000,
            maximumAge: 0
        });
    }

2.标注事件

   function addMaker(point) {
        var marker = new BMap.Marker(point);
        map.addOverlay(marker);

        //监听标注事件;
        marker.addEventListener("click", function () {
            console.log('标注被点击了');
            location.href = 'sub.html';
        });
    }

二、H5返回微信小程序

1.H5页面核心代码

  • 在H5页面引入//res.wx.qq.com/open/js/jweixin-1.6.0.js,建议使用高版本;
 <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <title>子页面</title>
    <script src="//res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
  • 点击返回按钮
<a href="javascript:;" onclick="getNavi(120.199672,30.331184,'米果国际·共赋未来谷','浙江省杭州市拱墅区石桥路293号');">导航到这里</a>
  • 调用微信小程序和H5通用API

判断是否在微信小程序环境中

    var wxApp = false;
    wx.miniProgram.getEnv(function (res) {
        if (res.miniprogram) {
            wxApp = true;
        } else {
            wxApp = false;
        }
    });

在这里插入图片描述

地图调起,再次返回小程序页

 //地图调起,再次返回小程序页
    function getNavi(lng, lat, name, address) {
        if (wxApp) { //小程序环境
            wx.miniProgram.navigateTo({
                url: '/pages/navi/navi?lng=' + lng + '&lat=' + lat + '&name=' + name + '&address=' + address,//跳转回小程序页面,传参
                success: function () {
                    console.log('成功跳回小程序')
                },
                fail: function () {
                    console.log('跳转回小程序页面失败');
                },
            });
        } else {
            window.location.href = 'https://test.com'
        }
    }

2.微信小程序接收传参核心代码

  • 获取H5传递参数的方式为: console.log(options)
  • latitude和longitude必须为数字类型,不支持字符串类型,需要parseFloat进行转换;
  • 调用wx.openLocation接口API进行地图导航调起;
 /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        //console.log(options)
        if (options != undefined) {
            //判断跳转页面;
            if (options.lat != "" && options.lat != undefined) {
                //获取H5传递参数
                let latitude = parseFloat(options.lat)
                let longitude = parseFloat(options.lng)
                let name = options.name
                let address = options.address
                //执行导航页
                wx.openLocation({
                    latitude,
                    longitude,
                    name,
                    address,
                    scale: 18
                })
            }
        } else {
            console.log('lockdatav')
        }
    },

三、开发中遇见的坑

1.wx.openLocation调起地图后需要点击两次返回才到web-view页面

解决方案1:官方问答,未能妥善解决。

解决方案2 在导航跳转页,重新加载了一次web-view页。给用户使用的感觉上是返回了一次。

<web-view src="https://test.com"></web-view>

2.H5无法调用百度定位new BMap.Geolocation对象

是在PC端IDE预览时,经常出现的问题。一般是因为PC端无法正常定位导致的,在真机预览即可。
在这里插入图片描述

3.安卓某些机型无法从H5跳转到小程序

安卓系统打开webview被微信拦截问题:在微信小程序里开发webview h5的时候,配置合法域名,域名备案的情况下,出现了 ios 上正常打开,但是在 Android 手机上出现了被拦截的情况,一般都是因为传参的url中存在中文导致的。

解决方案: encodeURI对汉字进行编码处理。

@漏刻有时

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

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

相关文章

Linux:《tar》归档命令

准备好4个文件然后使用tar命令进行归档 最常用的是 -c, --create&#xff08;小写&#xff09; 建立新的存档 -f, --file [HOSTNAME:]F 指定存档或设备 (缺省为 /dev/rmt0) -z, --gzip, --ungzip 用 gzip 对存档压缩或解压 -j&…

京东数据分析:2023年Q1白酒电商整体动销增长,中低端酒企压力大

早在年初就有白酒市场业内人士表示&#xff0c;2023年春节白酒消费市场整体景气度较高&#xff0c;白酒动销表现较为优秀&#xff0c;预计2023年一季度白酒动销有望实现一定的增长。 对于这一观点&#xff0c;我们在今年电商数据平台鲸参谋出炉的Q1白酒销售数据表现中得到了验证…

【软考高级】2019年系统分析师案例分析

1、阅读以下关于软件系统分析的叙述&#xff0c;在答题纸上回答问题1至问题3。 【说明】 某软件企业为电信公司开发一套网上营业厅系统&#xff0c;以提升服务的质量和效率。项目组经过分析&#xff0c;列出了项目开发过程中的主要任务、持续时间和所依赖的前置任务&#xff…

1.0 Vue的编译和运行

1、编程范式&#xff1a;命令式和声明式 编程范式是指一种程序语言的代码风格、样式&#xff0c;每一种范式都包含了代码特征和结构&#xff0c;以及处理错误的方式。 例如现在需要实现生成一个div模块&#xff0c;其显示的文本内容为hello world&#xff0c;添加一个点击事件…

X3派caffe yolov3 部署demo

yolov3放置在docker中/open_explorer/ddk/samples/ai_toolchain/horizon_model_convert_sample/04_detection/02_yolov3_darknet53/mapper 模型所需要的prototxt和caffe模型yolov3.caffemodel文件放置在docker中的/open_explorer/ddk/samples/ai_toolchain/model_zoo/mapper/de…

78页2023年智慧公安发展构思与建设解决方案(ppt可编辑)

本资料来源公开网络&#xff0c;仅供个人学习&#xff0c;请勿商用&#xff0c;如有侵权请联系删除。 总体架构10 建设方案-网络系统11 物联网15 视频网系统16 视频专网主干网根据运营商链路分为若干个环网部署&#xff0c;市局两台核心交换机位于网络核心层&#xff1b;部分…

SpringCloud 分布式事务组件之Seata

目录 背景介绍什么是分布式事务什么叫做逆向补偿呢互联网最流行的分布式事务组件seata总结 背景 大家好&#xff0c;今天给大家分享一个在2022年出去面试Java几乎必问的一个技术&#xff0c;那就是seata。什么&#xff1f;&#xff1f;你才看了第一句话心里有闪现了无数个问…

024 - C++ 虚函数

本期我们学习的是 C 中的虚函数。 过去的几期&#xff0c;我们一直在讨论类、面向对象编程、继承这些内容&#xff0c;所有的这些内容&#xff0c;包括本期我们将要学习的虚函数&#xff0c;对整个面向对象的概念都非常重要。 虚函数能干什么呢? 虚函数允许我们在子类中重写…

关于C语言的一些笔记

文章目录 May4,2023常量问题基本数据类型补码printf的字符格式控制关于异或、异或的理解赋值运算i和i的区别关系运算符 摘自加工于C技能树 May4,2023 常量问题 //定义常量 const float PI; PI 3.14; //false ,这种声明变量是错误的&#xff0c;常量声明之后就不能修改&…

树脂塞孔有哪些优缺点及应用?

树脂塞孔的概述 树脂塞孔就是利用导电或者非导电树脂&#xff0c;通过印刷&#xff0c;利用一切可能的方式&#xff0c;在机械通孔、机械盲埋孔等各种类型的孔内进行填充&#xff0c;实现塞孔的目的。 树脂塞孔的目的 1 树脂填充各种盲埋孔之后&#xff0c;利于层压的真空下…

关于使用Notion的board做工作安排这件事

关于使用Notion的board做工作安排这件事 Created: May 4, 2023 5:39 PM 壹 最近想用一个工具来实现平时工作的记录、跟踪、留痕以及年终的统计&#xff0c;之前尝试过幕布、微软的todo、手机自带的备忘录等工具&#xff0c;但是还是不能够完全满足需求。之前也用过一段时间的…

SPSS如何进行回归分析之案例实训?

文章目录 0.引言1.线性回归分析2.曲线回归分析3.非线性回归分析4.Logistic回归分析5.有序回归分析6.概率回归分析7.加权回归分析 0.引言 因科研等多场景需要进行绘图处理&#xff0c;笔者对SPSS进行了学习&#xff0c;本文通过《SPSS统计分析从入门到精通》及其配套素材结合网上…

Redis 实战篇:巧用 Bitmap 实现亿级海量数据统计

目录 二值状态统计判断用户登陆态SETBIT 命令GETBIT 命令第一步&#xff0c;执行以下指令&#xff0c;表示用户已登录。第二步&#xff0c;检查该用户是否登陆&#xff0c;返回值 1 表示已登录。第三步&#xff0c;登出&#xff0c;将 offset 对应的 value 设置成 0。 用户每个…

【web】HTTP工作原理及应用

一、浏览器工作 浏览器输入网址后&#xff0c;从DNS服务器中查找对应的IP&#xff0c;并返回客户端浏览器&#xff0c;然后通过ip地址去访问服务器。&#xff08;操作系统中host文件存了一些对应的IP地址&#xff0c;浏览器拿到域名会先从host文件中查找ip&#xff0c;如果找…

重工业生产VR虚拟现实数字化互动展示为后续招商引资打好基础和口碑

智慧工业厂区已经是当今城市规划和发展的重要焦点。华锐视点运用数字孪生&#xff0c;三维虚拟仿真和3D可视化打造的智慧园区管理平台&#xff0c;不仅提升了工业厂区吸引力&#xff0c;而且促进工业厂区可持续发展&#xff0c;给予了园区互联网先进技术发展的基础&#xff0c;…

Noah-MP陆面过程模型建模方法与站点、区域模拟实践技术

查看原文&#xff1a;Noah-MP陆面过程模型建模方法与站点、区域模拟实践技术 目标&#xff1a; 了解陆表过程的主要研究内容以及陆面模型在生态水文研究中的地位和作用&#xff1b;熟悉模型的发展历程&#xff0c;常见模型及各自特点&#xff1b;理解Noah-MP模型的原理&#…

[笔记]Windows使用OpenVpn构建虚拟局域网

文章目录 前言一、Windows Openvpn方案1.1 openvpn server windows端安装目录结构服务端安装复制服务端配置文件修改服务端配置文件配置8080允许通过防火墙启动服务端 1.2 openvpn client windows端安装复制服务端生成的配置文件到客户端的config启动客户端 二、连通测试三、常…

数字孪生可视化平台开发 打通现实与虚拟世界

大数据时代背景下&#xff0c;数字孪生技术被应用到智慧建设中&#xff0c;数字孪生是指在虚拟世界中1:1构建一个与现实世界的物体、场景和其他方面都完全相同的孪生景象。数字孪生可视化平台是一种基于虚拟现实技术的数字化模型&#xff0c;通过将真实世界中的物体或场景数字化…

Ubuntu---mysql出现ERROR1698(28000):Access denied for user root@localhost错误解决方法

查看mysql版本&#xff1a; 安装完成后&#xff0c;登录mysql的时候就出现了如下错误&#xff1a; 因为安装的过程中没让设置密码&#xff0c;可能密码为空&#xff0c;但无论如何都进不去mysql。 下面是处理过程&#xff1a; Step1&#xff1a;修改mysqld.cnf配置文件 在ubun…

ModuleNotFoundError: No module named ‘mmcv._ext‘

mmsegmentation使用pyinstaller打包出现问题 mmsegmentation是商汤开源的语义分割框架&#xff0c;里面包含了大量SOTA模型&#xff0c;十分适合从事语义分割工作的小白学习。 最近想将mmsegmentation打包成exe进行使用&#xff0c;但是遇到了一个问题&#xff0c;在打包的过…