uniapp APP、H5和微信小程序 使用百度地图,H5动态加载百度地图sdk,cover-image图片不显示,标准基座模拟器地图不显示,表单校验字段[‘**‘]在数据库中不存在

这篇具有很好参考价值的文章主要介绍了uniapp APP、H5和微信小程序 使用百度地图,H5动态加载百度地图sdk,cover-image图片不显示,标准基座模拟器地图不显示,表单校验字段[‘**‘]在数据库中不存在。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

APP里面的几个注意项

  1. 在百度地图开放平台申请密匙,在manifest.json App模块配置的地图模块选择百度地图并填入申请到的appkey。
  2. 页面使用uniapp的map标签,要在地图上面覆盖图片、内容等,使用cover-image、cover-view,因为map是原生组件,覆盖的内容有时不显示,使用v-if控制(这里不能使用v-show),在onload里面设置延迟几百毫秒显示;百度地图在自定义基座和打包才能正常显示,标准基座不会显示;
  3. 使用uni.getLocation({})获取定位,type传gcj02,在自定义基座中,定位获取到的坐标不用转为百度就是正常,但是打包后需要转为百度marker才能准确标记;
<template>
	<map ref="allmap" class="allmap" :latitude="latitude" :longitude="longitude" :markers="markers" :scale="scale">
		<cover-image class="icon_img" v-if="showCoverImg" src="/static/image/map_search.png"></cover-image>
	</map>
</template>
<script>
	import { gcj02tobd09 } from '@/utils/index.js'
	export default {
		data() {
			return {
				scale: "16",
				latitude: '',
				longitude:'',
				markers: [],
			}
		},
		onLoad() {
			const self = this
			self.getUserLocation()
			setTimeout(()=>{
				self.showCoverImg = true
			}, 500)
		},
		methods: {
			getUserLocation(){
				const self = this
				uni.showToast({
					title: '正在获取用户定位...',
					icon: 'none'
				});
				uni.getLocation({
					type: 'gcj02',
					geocode: true,
					success: res => {
						uni.showToast({
							title: '定位成功',
							icon: 'none'
						});
						// gcj02要转成百度坐标, gcj02tobd09为事先定义好的经纬度转换方法
						let formatLonlat = gcj02tobd09(res.longitude, res.latitude)
						self.latitude = formatLonlat.latitude
						self.longitude = formatLonlat.longitude
						// 获取定位后可进行其他操作
					},
					fail: (fail) => {
						uni.showToast({
							title: '定位失败',
							icon: 'none'
						});
					},
					complete: () => {
						
					}
				})
			},
		}
	}
	
</script>
<style lang="scss" scoped>
	.allmap {
		width: 750rpx;
		width: 100%;
		height: calc(50vh - var(--status-bar-height));
	}
	.icon_img {
		position: absolute;
		right: 12rpx;
		width: 80rpx;
		height: 80rpx;
	}
</style>

H5里面的几个注意项

  1. H5也要在开放平台申请ak,与APP的不可通用;
  2. H5里面不使用原生组件map;
  3. 动态引入百度地图sdk,并使用地图加载成功后的回调函数进行其他操作,否则地图没加载成功就使用new BMap()等方法会报错;
<template>
	<view id="allmap"></view>
	<image class="icon_img" src="/static/image/map_search.png"></image>
</template>
<script>
	import { gcj02tobd09 } from '@/utils/index.js'
	export default {
		data() {
			return {
				latitude: '',
				longitude:'',
			}
		},
		onLoad() {
			loadBaiduMap()
			const self = this
			setTimeout(()=>{
				self.initialize()
				self.getUserLocation()
			},200)
		},
		methods: {
			loadBaiduMap() {
			 	// 移动端H5使用v3.0版本比较好,h5的ak是申请的web平台的ak与app的ak是不一样的,initialize为地图加载成功的回调
				var script = document.createElement('script');
				script.src = "https://api.map.baidu.com/api?v=3.0&ak=百度AK&callback=initialize";
				document.body.appendChild(script);
			},
			initialize(){
				var map = new BMap.Map("allmap");
				map.centerAndZoom(new BMap.Point(this.longitude, this.latitude), 14);  // 初始化地图,设置中心点坐标和地图级别
				// 自定义marker图标	
				const myIcon = new BMap.Icon('static/map/marker.png', new BMap.Size(32, 32));
				let marker = new BMap.Marker(new BMap.Point(this.longitude, this.latitude),{
					icon: myIcon
				});
				map.addOverlay(marker)
			},
			getUserLocation(){
				// 这里可以使用uni.getLocation()定位,也可以使用百度地图里面的获取定位,使用百度地图里面的获取定位不需要进行经纬度转换
				var map = new BMap.Map("allmap");
				map.centerAndZoom(new BMap.Point(this.longitude, this.latitude), 14);
				uni.showLoading({
					title: '定位中...',
					mask: true,
				})
				const self = this
				var geolocation = new BMap.Geolocation()
				geolocation.getCurrentPosition(function(res){
					if(this.getStatus() == BMAP_STATUS_SUCCESS){
						self.getLocationSuccess = true
						uni.hideLoading()
						uni.showToast({
							title: '定位成功',
							icon: 'none',
						});
						map.setCenter(res.point)
						self.longitude = res.longitude
						self.latitude = res.latitude
					
						const myIcon = new BMap.Icon('static/map/marker.png', new BMap.Size(32, 32));
						let marker = new BMap.Marker(new BMap.Point(self.searchQuery.lon, self.searchQuery.lat),{
							icon: myIcon
						});
						map.addOverlay(marker)
						map.panTo(res.point) // 平滑移动
						// 获取定位成功后进行其他操作
					}else{
						uni.showToast({
							title: '定位失败,请稍后重试!',
							icon: 'none',
						});
					}
				})
			},
		}
	}
	
</script>
<style lang="scss" scoped>
	#allmap {
		width: 750rpx;
		width: 100%;
		height: calc(50vh - var(--status-bar-height));
	}
	.icon_img {
		position: absolute;
		right: 12rpx;
		width: 80rpx;
		height: 80rpx;
	}
</style>

微信小程序注意项

  1. 虽然百度地图有微信小程序的api,但并没有用,因为小程序根本不能直接使用百度地图,只能采用web-view方式引入外链嵌入,其实uniapp H5的百度地图实现了,将H5地图页面地址赋值web-view的src就可以,在小程序里面配置业务域名即可;
<template>
	<view>
		<!-- #ifdef MP-WEIXIN -->
		// webUrl是H5页面的地图
		<web-view :src="webUrl"></web-view>
		<!-- #endif -->
		<!-- #ifndef MP-WEIXIN -->
		<map ref="allmap" class="allmap" :latitude="latitude" :longitude="longitude" :markers="markers" :scale="scale">
			<cover-image class="icon_img" v-if="showCoverImg" src="/static/image/map_search.png"></cover-image>
		</map>
		<!-- #endif -->
	</view>
</template>

uni-forms校验出现字段在数据库中不存在的错误的可能原因是:文章来源地址https://www.toymoban.com/news/detail-505126.html

  1. uni-forms-item 加了name 属性,但是在rules中没有设置规则,即使是非必填,只要加了 name 属性,就必须在 rules 中设置规则,否则报错 “字段在数据库中不存在”;
  2. 使用了 validateFunction 时,必须在 onReady 生命周期调用组件的 setRules 方法绑定验证规则:this.$refs.form.setRules(this.rules),或者在 form 显示后立即调用 setRules (比如 form 在弹窗里面时弹窗显示后,tab 选项卡切换后)。

到了这里,关于uniapp APP、H5和微信小程序 使用百度地图,H5动态加载百度地图sdk,cover-image图片不显示,标准基座模拟器地图不显示,表单校验字段[‘**‘]在数据库中不存在的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp:h5和微信小程序文件下载方式

    一、h5浏览器端下载方式,直接使用a标签 download属性指定下载文件的文件名,也可以不加 注意:记得一定要加ifdef注释,不然其他端也会显示a标签 二、微信小程序下载方式,通过uniapp的downloadFile和wx小程序的saveFile保存文件 wx保存文件的api只是临时保存图片文件,可以通过微

    2024年02月07日
    浏览(87)
  • 采用uniapp实现的银行卡卡片, 支持H5和微信小程序

    采用uniapp-vue3实现的银行卡卡片 支持H5、微信小程序(其他小程序未测试过,可自行尝试) 可用于参考学习 可到插件市场下载尝试: https://ext.dcloud.net.cn/plugin?id=16736 使用示例

    2024年02月22日
    浏览(53)
  • 微信小程序学习实录6(百度经纬度采集、手动调整精度、H5嵌入小程序、百度地图jsAPI、实时定位、H5更新自动刷新)

    viewport,手机端的适配; layui,手机端界面UI; jweixin-1.6.0,H5与微信小程序通信的API接口文件 getBdGeo ();定位封装函数; marker.addEventListener(\\\'dragend\\\', function () {}, 监听标注事件,手动调整景点 getCurrentPosition, 加载即自动采集当前位置的经纬度信息和城市地址信息; 通过web-view

    2024年02月05日
    浏览(50)
  • uniapp判断h5/微信小程序/app端

    区分标识 写法:以 #ifdef 或 #ifndef 加 %PLATFORM% 开头,以 #endif 结尾。 #ifdef:if defined 仅在某平台存在 #ifndef:if not defined 除了某平台均存在 %PLATFORM%:平台名称 此方法支持文件有 .vue   (模板里使用  !-- 注释 --) .js   (使用 // 注释) .css  (使用  /* 注释 */) pages.json 

    2024年02月11日
    浏览(40)
  • uniapp 瀑布流 (APP+H5+微信小程序)

    WaterfallsFlow.vue waterfall.vue

    2024年02月15日
    浏览(41)
  • uniapp判断当前运行环境 app h5 微信小程序

    仅3.4.10+版本以上才支持,如果您的hbuilderX版本不是这个版本的需要先升级一下版本 hbuilderx下载 选择3.4.11及以上版本 uniPlatform   可取值如下:

    2024年02月11日
    浏览(41)
  • uniapp的打包:h5、微信小程序以及APP方式

    本人用的是HBuilder编译器,学习uniapp时b站某位大大推荐的,我刚开始接触代码时候也用过,那时候并不好用这个编译器,但是现在试了一下挺好用的。 这是h5页面的打包配置,新版本的HBuilder用的是web配置(也就是h5配置的意思) 由于上图是我个人项目练习,没有用到appID,所

    2024年02月09日
    浏览(44)
  • 微信小程序和微信H5有什么区别?

    前言:进入公司会发现会从最常见的PC端开发,慢慢将重心转移到H5开发,再到小程序开发,后面随着公司业务的发展还需要开发APP,也就是Android。也有可能顺序不一样,作为一个合格的后端甚至全栈,这些还是要会的。 在开发微信小程序功能的时候,发现微信小程序和微信

    2024年02月11日
    浏览(38)
  • 微信小程序学习实录5(H5嵌入小程序、map组件、地图调起功能、腾讯百度高德导航页、返回web-view页)

    创建容器 地图家长 在H5页面引入 //res.wx.qq.com/open/js/jweixin-1.6.0.js ,建议使用高版本; 点击返回按钮 调用微信小程序和H5通用API 判断是否在微信小程序环境中 地图调起,再次返回小程序页 获取H5传递参数的方式为: console.log(options) latitude和longitude必须为数字类型,不支持字符

    2024年02月07日
    浏览(70)
  • uniapp实现H5、APP、微信小程序三端文件下载

    这里我使用了uniapp官方api uni.downloadFile 和 uni.openDocument APP使用了uniapp官方api uni.downloadFile 和 uni.saveImageToPhotosAlbum(OBJECT) 还有 uni.openDocument H5的方法比较简单可以直接使用window.open方法下载。即: 如果你的浏览器支持预览,就会自动打开预览文件,然后自己手动下载文件,不支

    2024年02月16日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包