当前位置: 首页 > news >正文

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

目录

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

二、父页面引入子组件


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

<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>

二、父页面引入子组件

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

        <!-- 地图展示区域 -->
        <map-diy v-if="showMap" :showParams="mapParams" :showStyle="mapStyle"></map-diy>
  •  引入组件

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'
          });
        }
      });
    },

http://www.dtcms.com/a/59691.html

相关文章:

  • 【Git】合并冲突
  • MySQL-MVCC
  • MPPT与PWM充电原理及区别详解
  • 使用 Vue 3 + TypeScript + Vant 4 构建现代移动端应用
  • 小米智能音箱Pro搭载“超级小爱”,支持远程控车
  • 2025科技项目申报预测月历来啦!
  • C++程序设计语言笔记——基本功能:指针、数组与引用
  • Grafana Loki
  • 深度学习实战车辆目标跟踪与计数
  • 全栈网络安全|渗透测试-1
  • 网络初级复习作业
  • react+ts+eslint+prettier 配置教程
  • 【AI】AI开源IDE:CLine源码分析报告
  • 54-WLAN 无线局域网配置方案-三层
  • 云曦25开学考复现
  • React-异步队列执行方法useSyncQueue
  • MySql的in和join对比谁更高效
  • JVM_八股场景题
  • 【含文档+PPT+源码】Python爬虫人口老龄化大数据分析平台的设计与实现
  • Kubernetes开发环境minikube | 开发部署apache tomcat web集群应用
  • VUE2脚手架的下载与安装
  • 【含文档+PPT+源码】基于Python爬虫二手房价格预测与可视化系统的设计与实现
  • php虚拟站点提示No input file specified时的问题及权限处理方法
  • Web3 的隐私保护机制:如何保障个人数据安全
  • 【今日EDA行业分析】2025年3月8日
  • http协议的三次握手机制
  • Spring源码探析(一):SpringApplication构造函数核心逻辑
  • 工程化与框架系列(27)--前端音视频处理
  • 用OpenCV写个视频播放器可还行?(C++版)
  • MySQL知识点(第一部分)