uniapp使用map组件设置自定义气泡

这篇具有很好参考价值的文章主要介绍了uniapp使用map组件设置自定义气泡。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

uniapp使用map组件设置自定义气泡

前段时间做了一个app端地图的页面,记录一下

官方的文档只告诉了我们怎么设置自定义气泡,没有说具体怎么实现,插槽名叫什么

下面是一个案例,插槽名叫callout,使用时必须用< cover-view >标签包裹,不然它的层级不够,显示不到地图上面。文章来源地址https://www.toymoban.com/news/detail-543610.html

<template>
	<view class="indexView">
		<view style="width: 750rpx;" :style="{height: screenHeight + 'px'}">
			<map style="width: 750rpx;" :style="{height: (screenHeight-100) + 'px'}" :latitude="latitude"
				:longitude="longitude" :markers="covers" id="map1" ref="map1" @callouttap='callouttap'>
				<!-- 自定义气泡 -->
				<cover-view slot="callout">
					<cover-view class="customCallout" :marker-id="2">
						<dw-img class="cus_bg" name="index_bigzheng" :size="[169, 115]"></dw-img>
						<dw-img class="head_img" name="index_defult_head" :size="42" />
						<text class="me"></text>
					</cover-view>
				</cover-view>
			</map>
		</view>
	</view>
</template>

<script>
	let that = ''
	export default {
		data() {
			return {
				// 一些基本绑定参数
				id: 1, // 使用 marker点击事件 需要填写id
				title: 'map',
				latitude: "",
				longitude: '',
				lastAddress: '',
				currentTime: '',
				covers: [],
				screenHeight: 0,
			}
		},
		onReady() {
			this.getLocation()
		},
		onShow() {

		},
		onLoad() {
			this.screenHeight = uni.getSystemInfoSync().windowHeight;
			this.screenWidth = uni.getSystemInfoSync().windowWidth;
			that = this
		},
		methods: {
			getLocation() {
				let aData = new Date();
				let dateValue = aData.getFullYear() + "-" + (aData.getMonth() + 1) + "-" + aData.getDate() + ' ' + aData
					.getHours() + ':' + aData.getMinutes() + ':' + aData.getMilliseconds()
				this.currentTime = dateValue
				let that = this
				uni.getLocation({
					type: 'wgs84',
					geocode: true,
					success: (res) => {
						console.log('当前位置的经度:' + res.longitude);
						// res.address只有在ios才有效果,安卓和pc没用
						if (res.address) {
							let {
								province = '',
									city,
									district,
									street,
									streetNum
							} = res.address
							console.log('详细地址:' + (province ?? '') + (city ?? '') + district +
								street + (streetNum ?? ''));
							that.lastAddress = (province ?? '') + (city ?? '') + district +
								street + (streetNum ?? '')
						}
						that.longitude = res.longitude
						console.log('当前位置的纬度:' + res.latitude);
						that.latitude = res.latitude
						that.covers = [{
							id: 2,
							latitude: res.latitude,
							longitude: res.longitude,
							// title: '我的位置',
							width: '42rpx',
							height: '54rpx',
							iconPath: '/static/images/index_location.png',
							// 自定义气泡customCallout
							customCallout: {
								display: 'ALWAYS',
								anchorX: 0,
								anchorY: 15,
							},
						}]
						const myItem = {
							id: 0,
							lat: that.latitude,
							lng: that.longitude,
							mobile: user.mobile,
							createTime: new Date().getTime(),
							address: that.lastAddress
						}
						uni.setStorageSync('myItem', myItem);
						that.myItem = myItem
						that.setMyItem(myItem)
						that.pushLocation()
					},
					fail: function(err) {
						console.log("获取定位失败", err);
						uni.showToast({
							title: '获取定位失败',
							icon: 'none'
						});
					}
				})
			},
			// 把中心坐标移动到地图中心
			moveToLocation() {
				this.getLocation()
				this.$refs.map1.moveToLocation({
					longitude: this.longitude,
					latitude: this.latitude,
					success: (res) => {}
				})
			},

			pushLocation() {
				// nvue文件调用接口方式,只支持这种
				uni.request({
					url: baseURL + '/v1/locationInfo',
					method: 'POST',
					// 请求头
					header: {
						'Authorization': uni.getStorageSync('Authorization'),
						'content-type': 'application/json',
					},
					data: {
						address: this.lastAddress,
						lat: this.latitude,
						lng: this.longitude,
						userId: user.id,
						mobile: user.mobile,
						...apkInfo,
						...device,
					},
					success: function(res) {
						console.log('===========> ', res); // 服务器返回的数据
						uni.setStorageSync('timer', nowTimer);
					},
					fail(err) {
						console.log('===========', err);
					}
				})
			},
		}
	}
</script>



到了这里,关于uniapp使用map组件设置自定义气泡的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • uni-app 使用v-model封装picker组件和自定义样式

    1、v-model封装picker组件 (1)封装组件myPicker.vue (2)组件调用 (3)属性说明 属性名 类型 默认值 说明 options Object 数据选项,默认[{ name: \\\"办公\\\", value: \\\"1\\\" }]格式 rangeKey String label 数据选项的属性名 rangeValue String value 数据选项的属性值 placeholoder String 请选择 未选择数据时的默认

    2024年02月09日
    浏览(43)
  • uni-app 使用 Uview2.x 搭建自定义tabbar组件,自定义navbar,还会解决自定义导航栏引起闪烁性能差的问题!!!

    pages.json  上面可以看到tabbar我使用的原生的,但是值配置了pagepath,并且page里三个首页都可以自定义顶部导航栏,当然如果删掉custom那一行代码,就切换成原生顶部导航栏了。 下面拿一个首页作为代码演示:(顶部自定义导航栏组件和底部导航栏组件会放在最后) 下图组件

    2023年04月09日
    浏览(70)
  • uni-app小程序父组件数据更新,实现自定义组件刷新视图

    之前错误的思路 新思路(忽略我的参数命名,写文章的时候方便。)

    2024年02月16日
    浏览(35)
  • 前端vue uni-app自定义精美海报生成组件

    在当前技术飞速发展的时代,软件开发的复杂度也在不断提高。传统的开发方式往往将一个系统做成整块应用,一个小的改动或者一个小功能的增加都可能引起整体逻辑的修改,从而造成牵一发而动全身的情况。为了解决这个问题,组件化开发逐渐成为了一种趋势。通过组件

    2024年02月14日
    浏览(45)
  • 【uniapp】小程序开发:2 安装uni-ui组件库、使用pinia状态管理、自定义http请求

    1、安装 2、配置组件自动导入 使用 npm 安装好 uni-ui 之后,需要配置 easycom 规则,让 npm 安装的组件支持 easycom 打开项目根目录下的 pages.json 并添加 easycom 节点: 3、安装插件,实现uni-ui组件的类型提示 安装完成后,在 tsconfig.json 中增加配置项 4、测试使用 随便复制一个组件在

    2024年02月08日
    浏览(44)
  • uni-app编译成钉钉小程序,uViewUI组件样式失效,自定义组件样式失效

    公司项目需要把原本用 uinapp 开发的微信小程序想要在钉钉上也能使用,然后就打算用uniapp编译成钉钉小程序,看看是否有坑,不试不知道,一试吓一跳,官方没有提供钉钉的编译方式,按照网上文章的配置编译成钉钉小程序后,初步发现, uView-ui的icon没啦 ,然后样式和布局

    2024年02月11日
    浏览(42)
  • uni-app自定义组件components导入失败或页面不显示文本等

            一般来说分三步走,如下图  如果引入不成功则考虑以下几个问题: 是 components 而非 component 导入后的命名方式采用驼峰命名法 检查需要引入的文件路径和文件名是否正确 如果还有问题,则采用第二种方式直接在 components 中引入、注册一体,引入直接使用 chan

    2024年02月16日
    浏览(43)
  • 微信小程序map自定义气泡customCallout

    案例效果图: map地图气泡有两种方式:    一种是在marker上的,这种不能够自定义样式,如果需要展示花里胡哨的,采用第一种方式,进行cover-view布局  一、首先customCallout 是作为一个属性存在的,需要在marker中存在,我开发实例: 二、在map上添加对应组件 在这里需要强调

    2024年02月11日
    浏览(30)
  • Uni-app组件使用

    组件是 视图层的基本组成单元 。是一个单独且 可复用的功能模块的封装 。 组件名称是由尖括号包裹的,可以看成一个语义化标签,是有开始标签和结束标签的。 如下举个简单的例子: uni-card  //这是开始标签 text 这是一个基础卡片示例,内容较少,此示例展示了一个没有任

    2024年02月09日
    浏览(34)
  • uni-app开发微信小程序,textarea组件宽度设置,解决超出父级div

    当我们使用textarea组件时,会出现设置宽度100%,但其超出了父级Div,如下图 添加 box-sizing:border-box; 属性,即可完美解决。 box-sizing 属性定义如何计算一个元素的总宽度和总高度,主要设置是否需要加上内边距(padding)和边框等。 例如,假如您需要并排放置两个带边框的框,可通过将

    2024年03月13日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包