H5嵌入小程序(web-view)、BMap百度地图组件、导航功能、返回web-view页

1、H5页面中的地图展示

  • 创建地图容器,添加导航按钮
<template>
  <div>
    <div class="baidumap" id="allmap"></div> //创建地图容器
    <div class="button_row">
      <van-button type="info" round @click="getNavi()">导航前往</van-button>
    </div>
  </div>
</template>

<style lang="scss" scoped>
.button_row {
  margin-top: 30px;
}
.van-button {
  width: 300px;
}
.baidumap {
  width: 100%;
  height: 500px;
  margin-top: 45px;
}
</style>
  • 页面地图加载
<script>
export default {
  data() {
    return {
      map: null
    };
  },
  mounted() {
    this.baiduMap();
  },
  methods: {
    baiduMap() {
      if (window.BMap) this.map = new window.BMap.Map("allmap"); // 创建Map实例
      this.map.enableScrollWheelZoom(); // 开启鼠标滚轮缩放
      this.map.addControl(new window.BMap.NavigationControl()); //向地图中添加缩放控件
      this.map.addControl(new window.BMap.ScaleControl()); //比例尺控件
      this.map.addControl(new window.BMap.MapTypeControl()); //负责切换地图类型的控件
      /* 根据 经纬度 定位|标记 */
      let point = new window.BMap.Point( //实例坐标点
        Number(this.details.long),
        Number(this.details.lat)
      );
      var marker = new window.BMap.Marker(point); //创建标注
      this.map.addOverlay(marker); // 将标注添加到地图中
      this.map.centerAndZoom(point, 18); // 初始化地图,设置中心点坐标和地图级别
    }
  }
};
</script>

2、H5传递数据到微信小程序,并调用wx.openLocation微信内置地图及导航功能的实现

1.H5页面核心代码

public/index.html中引入jweixin-1.6.0.js,建议使用高版本;

<meta name="viewport"
     content="width=device-width, initial-scale=1.0"
     http-equiv="cache-control"
     content="no-cache"
   />
<script src="./jweixin-1.6.0.js"></script>

页面中的点击导航按钮触发事件


getNavi() {
	var wxApp = false;
	wx.miniProgram.getEnv(function (res) {
	    if (res.miniprogram) {
	        wxApp = true;
	    } else {
	        wxApp = false;
	    }
	});
	if (wxApp) { //小程序环境
	let {
        lng ,
        lat,
        name,
        address,
      } = this.info;//数据自己赋值
	    wx.miniProgram.navigateTo({
	        url: '/pages/navi/navi?lng=' + lng + '&lat=' + lat + '&name=' + name + '&address=' + address,//跳转回小程序页面,并传参
	        success: function () {
	            console.log('成功跳回小程序')
	        },
	        fail: function () {
	            console.log('跳转回小程序页面失败');
	        },
	    });
	}
}

2.微信小程序接收传参

  • 获取H5传递参数的方式为: console.log(options)
  • latitude和longitude必须为数字类型,不支持字符串类型,需要parseFloat进行转换;
  • 调用wx.openLocation接口API进行微信内置地图调起;
	//nai.js
	data: {
			num:true
		},

 /**
     * 生命周期函数--监听页面加载
     */
    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
				this.setData({
					num:false
				})
				//执行导航页
				wx.openLocation({
					latitude,
					longitude,
					name,
					address,
					scale: 18
				})
			}
		}
    },
/**
	 * 生命周期函数--监听页面显示
	 */
	onShow() {
		let a = getCurrentPages()
		console.log(a,!this.data.num,'onShow');//wx.navigateBack 无效,确认一下小程序中页面栈
		if(!this.data.num){
			wx.navigateBack({//解决wx.openLocation调起地图后需要点击两次返回才到web-view页面
			  delta: 1
			})
		}
	},
  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在uni-app中引入百度地图,可以通过以下步骤实现: 步骤一:添加百度地图插件 1. 打开HBuilderX开发环境,在项目目录下的manifest.json文件中找到"uniPlugins"字段。 2. 在"uniPlugins"字段中添加以下代码: ```json { "name": "@dcloudio/pdfjs", "version": "1.0.0", "provider": "dcloudio" } ``` 3. 保存文件,等待HBuilderX自动安装依赖。 步骤二:创建百度地图组件 1. 在pages目录下新建一个名为"map"的文件夹,并在该文件夹下创建一个名为"map.vue"的组件文件。 2. 在"map.vue"文件中引入百度地图组件: ```html <template> <view> <view id="map"></view> </view> </template> <script> export default { mounted() { this.initMap() }, methods: { initMap() { // 初始化地图 const map = new BMap.Map('map') // 设置地图中心点 const point = new BMap.Point(116.404, 39.915) map.centerAndZoom(point, 15) } } } </script> ``` 3. 保存文件。 步骤三:在页面中使用百度地图组件 1. 打开需要使用百度地图页面组件文件。 2. 在需要显示地图的位置插入组件标签: ```html <template> <view> <map></map> </view> </template> ``` 3. 保存文件。 通过以上步骤,就可以在uni-app中成功引入百度地图了。在浏览器中打开该页面,即可看到引入的百度地图组件,并根据代码中设置的经纬度显示地图中心点。如果需要进一步使用百度地图功能,可以参考百度地图开发文档进行相关操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值