uniapp 自定义地图组件(根据经纬度展示地图地理位置)

目录

一、定义组件(pages/compoent/diy/mapDiy.vue)

二、父页面引入子组件


一、定义组件(pages/compoent/diy/mapDiy.vue)

javascript 复制代码
<template>
	<view class="diy-map" :style="{padding: paddingTop + ' ' + paddingLeft, background: showStyle.background, borderRadius: itemBorderRadius}">
		<map class="map" :latitude="showParams.latitude" :longitude="showParams.longitude" :style="{height: height}" @click="onClick"></map>
	</view>
</template>

<script>
	export default {
		name: 'mapDiy',
		props: ['showStyle', 'showParams'],
		computed: {
			itemBorderRadius() {
				return uni.upx2px(this.showStyle.itemBorderRadius * 2) + 'px';
			},
			height() {
				return uni.upx2px(this.showStyle.height * 2) + 'px';
			},
			paddingTop() {
				return uni.upx2px(this.showStyle.paddingTop * 2) + 'px';
			},
			paddingLeft() {
				return uni.upx2px(this.showStyle.paddingLeft * 2) + 'px';
			},
		},
		methods: {
			// 点击事件
			onClick() {
				uni.openLocation({
					latitude: parseFloat(this.showParams.latitude),
					longitude: parseFloat(this.showParams.longitude),
				});
			}
		}
	}
</script>

<style lang="scss">
	.diy-map .map {
		width: 100%;
	}
</style>

二、父页面引入子组件

  • 写一个按钮获取当前地理位置
html 复制代码
        
       <!-- 获取当前位置按钮 -->
        <button @click="getCurrentLocation">获取当前位置</button>

        <!-- 地图展示区域 -->
        <map-diy v-if="showMap" :showParams="mapParams" :showStyle="mapStyle"></map-diy>
  • 引入组件
javascript 复制代码
import mapDiy from "@/pages/component/diy/mapDiy.vue";
export default {
  components: {
    articleItem,
    mapDiy,
  },
  data() {
    return {
      showMap: false, // 是否显示地图
      mapParams: { latitude: '', longitude: '' }, // 地图的经纬度参数
      mapStyle: { height: 300, background: '#fff', paddingTop: 10,itemBorderRadius: 8 } // 地图样式
    };
  },
methods: {
     // 获取当前位置信息并显示地图
     getCurrentLocation() {
      wx.getLocation({
        type: 'wgs84', // 获取GPS定位的经纬度
        success: (res) => {
          const latitude = res.latitude;
          const longitude = res.longitude;

          // 更新地图参数并显示地图
          this.mapParams = { latitude, longitude };
          this.showMap = true; // 显示地图
        },
        fail: (error) => {
          wx.showToast({
            title: '无法获取位置,请检查权限',
            icon: 'none'
          });
        }
      });
    },
相关推荐
程序员大阳5 小时前
副队长JavaScript教程(58)-基于DOM的网页留言板开发
javascript·实例·dom·案例·留言板
陌离5 小时前
Go-Gui:一套 无限接近 现代化UI的 GPU绘制界面组件框架
前端
咚咚咚小柒5 小时前
【前端】LangChain.js学习
前端·javascript·人工智能·typescript·langchain·vue·ai编程
2401_885885045 小时前
巴林语音通知接口如何对接?系统告警语音API接入教程
android·前端·网络·python·语音识别
java1234_小锋5 小时前
【技术专题】CSS3 网页技术 - CSS3 盒模型
前端·css·css3
计算机魔术师5 小时前
手握芯片、又要吞下开源分发入口,英伟达被盯上了
前端
段一凡-华北理工大学6 小时前
高炉能源系统智能化:热风炉、煤气与极致能效~系列文章07:高炉煤气:产生规律与全厂用户平衡
java·前端·能源
程序员大阳6 小时前
副队长JavaScript教程(55)-DOM节点增删改查
javascript·dom·增删改查·节点·克隆
前端架构师-老李6 小时前
HTML与CSS基础第四课—strong、em、b、i 各表示什么
前端·css·html
king王一帅7 小时前
AI 时代一群人在卷笔记软件,我想先把 Markdown 编辑器的底层做好
前端·ai编程·markdown