vue 依据腾讯地图数据实现动态的全国地图

今天帮助同事解决了一个问题,虽然我现在用不到,但是可以记录下来,说不定哪天就需要了,同时也可以帮助别人。

效果:
在这里插入图片描述
上面只是一张简单的图片,真实的效果和我们手机上安装的腾讯地图app一样,可以随时放大和缩小。

实现:

第一步:

不论我们在项目中遇到关于地图的什么形式,比如是腾讯地图和百度地图等,都需要去获取一个密钥,有了它,我们才可以去使用相关的数据。

获取腾讯地图的密钥
1、首先去申请一个key,可以在 腾讯官网 这个网站里申请。打开是下图这个样子的。
在这里插入图片描述2、点击登录,绑定一些信息,手机号之类的,随后点进开发者信息里,如下图
在这里插入图片描述3、点击key管理,创建新密钥,填写相应信息即可
在这里插入图片描述4、申请成功后是这样的-(五位一组,共六组)
在这里插入图片描述
代码实现

1、在vue项目中src中新建utils文件夹,建一个js文件(map.js)

// 引入qq地图
export function TMap(key) {
  console.log(key)
  return new Promise(function (resolve, reject) {
    window.init = function () {
      resolve(qq) //注意这里
    }
    var script = document.createElement("script");
    script.type = "text/javascript";
    script.src = "http://map.qq.com/api/js?v=2.exp&callback=init&key=" + key;
    script.onerror = reject;
    document.head.appendChild(script);
  })
}

解释:

声明一个TMap函数并抛出,key值是在使用页面中传过去的参数(即密钥),接着便是使用parmise中resolve把返回的值传到页面上。

2、便是把这个js文件引入到我们要使用的页面中

import { TMap } from "../../utils/atlas";

3、在created里面调用

TMap(这里便是你申请的key(密钥)).then((qq) => {
      	this.init(); //init是初始化的方法
}),

4、在你要展示的页面给一个承载的容器

<div id="main_echarts" style="width: 500px; height: 400px"></div>

5、初始化地图方法(init)

data() {
  return {
     longitude: "",
     latitude: ""
  };
},
methods: {
    init() {
      let address = "";
      let that = this;
      var center = new qq.maps.LatLng(34.754152, 113.667636);// 注意这里前面是一个地区的纬度,一个是经度(即页面每次刷新停留的地方)
      var map = new qq.maps.Map(document.getElementById('main_echarts'), {
        center: center,
        zoom: 13,
        disableDefaultUI: true
      });
      var marker = new qq.maps.Marker({
        position: center,
        map: map
      });
      var infoWin = new qq.maps.InfoWindow({
        map: map
      });
      var geocoder = new qq.maps.Geocoder({
        complete: function(res) {
          console.log(res);
          address = res.detail.nearPois[0].name;
        }
      });
      qq.maps.event.addListener(map, "click", function(event) {
        this.longitude = event.latLng.getLat();
        this.latitude = event.latLng.getLng();
        console.log(event);
        let lat = new qq.maps.LatLng(this.longitude, this.latitude);
        geocoder.getAddress(lat);
        setTimeout(() => {
          infoWin.open();
          infoWin.setContent(
            '<div style="text-align:center;white-space:nowrap;">' +
              address +
              "</div>"
          );
          infoWin.setPosition(event.latLng);
        }, 200);
      });
    }
  },

以上便可以实现一个简单的中国各省各地区的地图(亲自试验过的)。有什么不对的地方,请联系我,帮我指正。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在Vue实现腾讯地图的搜索功能,首先需要注册并申请腾讯地图API的key。然后,在Vue项目的/public文件夹中的index.html文件的head标签中引入腾讯地图API的脚本。这可以通过在index.html中添加以下代码来实现: ``` <script src="//map.qq.com/api/js?v=2.exp&key=你的API密钥"></script> <script src="https://map.qq.com/api/gljs?v=1.exp&libraries=service&key=你的API密钥"></script> ``` 接下来,你需要安装lodash和vue-jsonp两个库。可以使用以下命令来安装它们: ``` npm install --save lodash npm install vue-jsonp --save ``` 在Vue的main.js文件中,需要引入vue-jsonp库,并使用Vue.use()来注册vue-jsonp插件: ``` import Vue from 'vue' import { VueJsonp } from 'vue-jsonp' Vue.use(VueJsonp) ``` 最后,你可以在Vue的组件中使用腾讯地图API来进行搜索操作。可以通过使用腾讯地图提供的服务来获取关键词的经纬度和地址,并将地图显示在页面上。具体的代码实现可以根据你的需求和UI设计来进行编写。 请注意,以上代码是基于腾讯地图API的使用示例,你需要根据你自己的腾讯地图API密钥来替换代码中的"你的API密钥"部分。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [vue中使用腾讯API地图实现搜索关键词获取经纬度和地址并显示地图](https://blog.csdn.net/myjava_6/article/details/126219504)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [2023年 vue使用腾讯地图搜索、关键字输入提示、地点显示](https://blog.csdn.net/HelloWord176/article/details/131556906)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值