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

天地图 uniapp使用笔记

官网地址:天地图API

效果:

<template>
	<view>
		<!-- 显示地图的DOM节点 -->
		<view id="container" class="content"></view>
		<!-- END -->
	
		<!-- 数据显示 -->
		<h3>城市名称(IP属地):{{ city }}</h3>
		<h4>经纬度:{{ latitude }}</h4>
		<button @click="getCity()">获取用户定位</button>
		<!-- END -->
	</view>
</template>

<script>
export default {
	data() {
		return {
			// 城市名称(IP属地)
			city: '',

			// 经纬度
			latitude: ''
		}
	},
	
	onLoad() {
		// 加载天地图插件
		this.loadMap()
	},
	
	methods: {
		
		/**
		 * 加载天地图插件
		 * @description 完毕后,可执行业务操作
		 * @return void
		 */
		loadMap() {
			try{
				// 您申请的天地图key
				const key = '您申请的Key,填写到此!'
				// 动态创建script标签引入
				var script = document.createElement("script");
				script.type = "text/javascript";
				script.src = "https://api.tianditu.gov.cn/api?v=4.0&tk=" + key;
				script.onload = script.onreadystatechange = () => {
					if (!this.readyState || this.readyState === "loaded" || this.readyState === "complete") {
						// 加载完毕,执行业务逻辑函数
						// ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
						this.createMap();//创建地图
						// ....

						script.onload = script.onreadystatechange = null;
					}
				};
				document.body.appendChild(script);
			}catch(e){
				//TODO handle the exception
			}
		},

		/**
		 * 创建地图
		 * @description 匹配dom显示
		 * @return void
		 */
		createMap() {
		  var map;
		  var zoom = 12;
		   map = new T.Map('container', {
			  projection: 'EPSG:4326'
		  })
		  map.centerAndZoom(new T.LngLat(116.40769, 39.89945), zoom);
		},

		/**
		 * 获取用户定位
		 * @description IP属地/经纬度
		 * @return void
		 */
		getCity() {
		  const lc = new T.LocalCity();
		  lc.location((e) => {
			  console.log(e)
			  // 赋值data
			  this.city = e.cityName;
			  this.latitude = e.lnglat;
		  })
		},
	}
}
</script>

<style scoped>
/* 自定义宽高等样式 */
.content {
	height: 300px;
	width: 100%;
}
</style>

相关文章:

  • dbForge Studioor MySQL v6 解锁版 安装教程(MYSQL数据库客户端)
  • ubuntu换镜像源方法
  • 课程设计---哈夫曼树的编码与解码(Java详解)
  • Stable diffusion 3 正式开源
  • 嵌入式硬件VS软件,到底哪个更难?
  • 详解 HBase 的安装部署及命令行操作
  • C语言从头学22——main( )函数
  • VMR,支持30+种编程语言的SDK版本管理器,支持Windows/MacOS/Linux。
  • 嵌入式开发十八:USART串口通信实验
  • 22种常用设计模式示例代码
  • Building wheels for collected packages: mmcv, mmcv-full 卡住
  • Mamaba3--RNN、状态方程、勒让德多项式
  • Vue CLI,Vue Router,Vuex
  • 如何配置node.js环境
  • Vue59-全局事件总线:任意组件间通信
  • 软件工程复习
  • 数据库 | 试卷五试卷六试卷七
  • 深圳中小企业融资攻略,贷款方法大盘点!
  • TIME_WAIT的危害
  • Flutter 中点击输入框之外的区域,进行失焦,收起键盘
  • 云南一餐馆收购长江野生鱼加工为菜品,被查处罚款
  • “爱鸟周”为何不能像FI和花展那样“市区联动”
  • 七方面118项任务,2025年知识产权强国建设推进计划印发
  • 无人机穿越大理千年古塔落券洞内,涉事“飞手”被行拘10日
  • 75岁亚当·费舍尔坐镇,再现80分钟马勒《第九交响曲》
  • 奥园集团将召开债券持有人会议,拟调整“H20奥园2”本息兑付方案