用cursor三个小时复刻高德地图的足迹地图

用cursor三个小时复刻了高德地图的足迹地图,当然,是“低配”版的。
在这里插入图片描述

1、首先要初始化,提出一个需求,让它自由发挥请添加图片描述

运行之后发现它报错了,原因出在这行代码,“https://cdn.jsdelivr.net/npm/echarts@5,4.3/map/js/china.js”,在5.0以后,echarts移除了map的内置支持。它先后经历了,换个错误的cdn地址、使用静态json数据、用百度的地图数据等过程,最后还是不行。
请添加图片描述

在反复提醒之后,他开始玩赖了,在网络上随便搜了一下每个省的中心位置,给我在地图上画了34个小框框敷衍我,这里我忘了截图了,是真的很敷衍!
请添加图片描述

后面我只好告诉他正确的地址,最后终于给出了结果,它给出的结果是这样的。
请添加图片描述

好像是一个很好的开端,但是还不够,高德的足迹地图是细分到市级的,这里只到省级。它引入的数据是“china.json”,只有省级的数据,而市级的数据在“china-cities.json”。于是我让它把两个都引入进来。这个时候骚操作开始了,他给我画了两个图层,省在上面,市在下面,只要我一缩放或者拖拽,两个图层就不同步了。
请添加图片描述

没办法,我只好告诉他,应该要先合并两个json,然后用合并后的数据注册到地图上

// 合并数据
const mergedJson = {
    ...provinceJson,
    features: [...provinceJson.features, ...cityJson.features]
};
// 解码合并后的数据
const decodedJson = decode(mergedJson);
// 注册合并后的地图数据
echarts.registerMap('china', decodedJson);

经过一番调教,最后才得到了初版能看的“中国轨迹地图”,可以自定义显示自己曾经在这片大地上留下的痕迹。
请添加图片描述

500多行代码,调教了大概30多次,能写出这个效果也还算很不错了。我发现cursor爱钻牛角尖,一条路你不告诉它是错的它要一直走下去,浪费你的时间。同时一些不确定的信息,它能给你编的像模像样,需要自己有一双火眼金睛~

### 如何在 UniApp 中集成和使用高德地图 API #### 准备工作 为了能够在 UniApp 项目中顺利集成并使用高德地图 API,需先完成准备工作。这包括获取应用所需的密钥以及安装必要的依赖项。 - **申请 Web API Key** 访问[高德开放平台](https://lbs.amap.com/)注册账号,并创建新的应用程序来获得专属的Web服务API key[^1]。 - **下载 amap-wx.js 插件** 进入官方提供的链接——《高德地图微信小程序插件文档入门指南》中的资源页面下载 `amap-wx.js` 文件至项目的 plugin 或 utils 文件夹下。 #### 初始化配置 接下来,在 main.js 中引入 AMap SDK 并初始化全局变量以便后续调用: ```javascript import Vue from 'vue'; // 导入SDK核心类库 import { AMapLoader } from '@amap/amap-jsapi-loader'; Vue.prototype.$AMap = null; if (process.env.NODE_ENV === "development") { window._AMapSecurityConfig = { securityJsCode: "YOUR_SECURITY_CODE", // 安全码可选填 }; } AMapLoader.load({ "key": "您的Key", "version": "2.0", "plugins": ["AMap.PlaceSearch"] // 加载所需插件 }).then((AMap) => { Vue.prototype.$AMap = AMap; }); ``` 此处需要注意替换 `"您的Key"` 和 `"YOUR_SECURITY_CODE"` 为实际值[^3]。 #### 地图组件封装 基于上述准备,可以构建一个简单的地图展示组件用于显示地理位置信息。下面是一个基础的地图容器实例代码片段: ```html <template> <view class="map-container"> <!-- 使用web-view标签加载H5网页 --> <web-view :src="'about:blank'" @load="initMap"></web-view> </view> </template> <script> export default { data() { return {}; }, methods: { initMap(e){ const mapContainerId = e.detail.ref; this.$nextTick(() => { let map = new this.$AMap.Map(mapContainerId, { zoom: 10, center:[116.397428, 39.90923], // 默认中心点坐标 }); // 添加标记物或其他交互逻辑... }) } } }; </script> <style scoped lang='scss'> .map-container{ width: 100%; height: calc(100vh - var(--window-top)); } </style> ``` 此部分展示了如何通过 web-view 组件嵌入 H5 页面的方式呈现地图视图,并利用 `$AMap` 对象操作地图对象属性与方法[^2]。 #### 实现自定义功能 对于更复杂的需求比如添加按钮控制地图行为或是增强标注样式,则可以通过监听事件、动态修改 DOM 结构等方式达成目标。例如向现有 Map 组件内增加控件按钮,可通过如下方式实现: ```javascript methods:{ addControlButton(){ let controlDiv = document.createElement('div'); controlDiv.style.cssText = '-webkit-user-select:none;background-color:#fff;border-radius:4px;' + 'box-shadow:0 2px 10px rgba(0,0,0,.2);cursor:pointer;font-size:.8em;padding:.5rem;'; controlDiv.innerHTML = '<button id="custom-control">点击放大</button>'; document.body.appendChild(controlDiv); let buttonElement = document.getElementById('custom-control'); buttonElement.addEventListener('click', () => { console.log('Custom Control Button Clicked!'); this.zoomIn(); }); function zoomIn(){ this.$AMap.getInstances()[0].setZoom(this.$AMap.getInstances()[0].getZoom()+1); } this.controlDiv = controlDiv; } } ``` 这段脚本说明了怎样构造 HTML 元素作为用户界面的一部分并与 JavaScript 方法关联起来响应用户的动作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值