FPF   付鹏篚的笔记
  • 主页
  • 归档
  • 分类
  • 标签
  • 关于

付鹏篚

  • 主页
  • 归档
  • 分类
  • 标签
  • 关于
Quiet主题
  • Map
  • 配置

Vue集成腾讯地图API高效接入与交互实战指南

付鹏篚
Vue

2024-05-15 20:00:00

文章目录
  1. Vue.js 集成腾讯地图API高效接入与交互实战指南
  2. 一、准备工作
    1. 1. 注册腾讯地图开放平台
    2. 2. 获取API密钥
  3. 二、在Vue项目中引入腾讯地图API
    1. 1. 引入腾讯地图JavaScript API
    2. 2. 创建地图组件
  4. 三、在父组件中使用地图组件
  5. 四、进阶功能实现
    1. 1. 获取当前位置
    2. 2. 关键字搜索
  6. 五、总结
  7. 参考资料

Vue.js 集成腾讯地图API高效接入与交互实战指南


一、准备工作

1. 注册腾讯地图开放平台

首先,我们需要注册腾讯地图开放平台账号并创建应用,以获取API密钥(Key)。具体步骤如下:

  1. 访问腾讯地图开放平台:腾讯地图开放平台。
  2. 注册并登录腾讯地图开放平台账号。
  3. 在“我的应用”页面,点击“创建应用”按钮。
  4. 填写应用名称、选择应用类型,点击“创建”。
  5. 在应用列表中找到新创建的应用,点击“添加Key”来配置相关信息并启用所需产品。
  6. 如果是微信小程序开发,还需填写小程序的AppId。

2. 获取API密钥

完成上述步骤后,你将获得一个API密钥(Key),后续引入腾讯地图API时需要使用此密钥。


二、在Vue项目中引入腾讯地图API

1. 引入腾讯地图JavaScript API

在Vue项目的 public/index.html 文件中,添加以下代码来引入腾讯地图的JavaScript API:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Vue 腾讯地图示例</title>
  <script src="https://map.qq.com/api/gljs?v1.exp&key=YOUR_API_KEY"></script>
</head>
<body>
  <div id="app"></div>
</body>
</html>

将 YOUR_API_KEY 替换为你申请到的API密钥。

2. 创建地图组件

在 src/components 目录下创建一个新的Vue组件 MapComponent.vue:

<template>
  <div id="map" style="width: 100%; height: 400px;"></div>
</template>

<script>
export default {
  name: 'MapComponent',
  mounted() {
    this.initMap();
  },
  methods: {
    initMap() {
      const map = new qq.maps.Map(document.getElementById('map'), {
        center: new qq.maps.LatLng(39.916527, 116.397128), // 设置地图中心点
        zoom: 10, // 设置缩放级别
      });
    },
  },
};
</script>

<style scoped>
/* 地图组件样式 */
</style>

三、在父组件中使用地图组件

在父组件中使用 MapComponent,例如 App.vue:

<template>
  <div>
    <h1>腾讯地图示例</h1>
    <MapComponent />
  </div>
</template>

<script>
import MapComponent from './components/MapComponent.vue';

export default {
  name: 'App',
  components: {
    MapComponent,
  },
};
</script>

<style>
/* 父组件样式 */
</style>

四、进阶功能实现

1. 获取当前位置

使用腾讯地图API的定位功能获取用户的当前位置:

methods: {
  getCurrentLocation() {
    const geolocation = new qq.maps.Geolocation('YOUR_API_KEY', 'your-app-name');
    geolocation.getLocation((position) => {
      const lat = position.lat; // 纬度
      const lng = position.lng; // 经度
      const map = new qq.maps.Map(document.getElementById('map'), {
        center: new qq.maps.LatLng(lat, lng),
        zoom: 14,
      });
      const marker = new qq.maps.Marker({
        position: new qq.maps.LatLng(lat, lng),
        map: map,
      });
    }, (error) => {
      console.error('定位失败:', error);
    });
  },
},

在 mounted 钩子中调用 getCurrentLocation 方法:

mounted() {
  this.getCurrentLocation();
}

2. 关键字搜索

实现关键字搜索功能,可以在地图上根据用户输入的关键字查找地点。首先在 MapComponent.vue 中添加搜索功能:

methods: {
  searchKeyword(keyword) {
    const searchService = new qq.maps.SearchService({
      map: this.map,
      complete: (results) => {
        const pois = results.detail.pois;
        if (pois && pois.length > 0) {
          const latLng = new qq.maps.LatLng(pois[0].lat, pois[0].lng);
          this.map.setCenter(latLng);
          const marker = new qq.maps.Marker({
            position: latLng,
            map: this.map,
          });
        }
      },
    });
    searchService.search(keyword);
  },
}

在模板中添加搜索框,用户可以输入关键字进行搜索:

<template>
  <div>
    <input type="text" v-model="keyword" @keyup.enter="searchKeyword(keyword)" placeholder="输入关键字搜索" />
    <MapComponent ref="mapComponent" />
  </div>
</template>

<script>
import MapComponent from './components/MapComponent.vue';

export default {
  name: 'App',
  components: {
    MapComponent,
  },
  data() {
    return {
      keyword: '',
    };
  },
  methods: {
    searchKeyword(keyword) {
      this.$refs.mapComponent.searchKeyword(keyword);
    },
  },
};
</script>

<style>
/* 搜索框样式 */
</style>

五、总结

  • 注册腾讯地图开放平台并获取API密钥。
  • 在Vue项目中引入腾讯地图API。
  • 创建地图组件并展示基本地图。
  • 实现获取当前位置功能。
  • 添加关键字搜索功能,用户可以输入关键词在地图上定位地点。

参考资料

  • 腾讯地图开放平台
  • 腾讯地图JavaScript API文档
上一篇

Rhino8提示Your license is not valid.Rhino needs a license to run.

下一篇

微信小程序支付

©2025 By 付鹏篚. 主题:Quiet
Quiet主题