目录

微信小程序调用腾讯地图-并解读API文档-JavaScript-SDK和-WebService-API

目录

微信小程序调用腾讯地图-并解读API文档 JavaScript SDK和 WebService API

搜索:腾讯位置服务

https://i-blog.csdnimg.cn/blog_migrate/4eda2c8b5aa552522729a93bc957ebdb.png

找到API文档:

https://i-blog.csdnimg.cn/blog_migrate/fbff1267032f633e4d1fb1fb25eff472.png

入门中第一步:申请开发者密钥key

https://i-blog.csdnimg.cn/blog_migrate/1e1efed5170affd484e387554e659ea1.png

前往控制台:

https://i-blog.csdnimg.cn/blog_migrate/a0557985e18268ed0bdcf56878fa940c.png

创建应用并获取key:

https://i-blog.csdnimg.cn/blog_migrate/b26f19dd09acf70c4c7266089384ad5b.png

设置key的时候,还需要小程序的APPID。所以要前往微信公众平台中获取小程序的APPID:

https://i-blog.csdnimg.cn/blog_migrate/22a4206e9f22019037eae35bd9224604.png

限制要求:

https://i-blog.csdnimg.cn/blog_migrate/52e77e2c09111bd32a49af428e01531c.png

添加配额:

https://i-blog.csdnimg.cn/blog_migrate/5e65f8bcf27cdfe0e7ff13a684643642.png

看清哪一个key并且设置配额。如果有多个key,也可以根据特别的某些key进行分配额度:

https://i-blog.csdnimg.cn/blog_migrate/b21954df313ba645adf37c756072dde5.png

下载地图的SDK:

https://i-blog.csdnimg.cn/blog_migrate/3063fab5f9aa0c6f910ee4d65f0a1fc5.png

并放入项目中:

https://i-blog.csdnimg.cn/blog_migrate/1e9952974c6c9a27a27a565f430f73ce.png

添加服务器域名白名单:

https://i-blog.csdnimg.cn/blog_migrate/5260e602506ecb20bd27c33de23d504a.png

登录微信公众平台:

https://i-blog.csdnimg.cn/blog_migrate/43d75cadf426f5a72fb7156de79b031b.png

设置白名单:

https://i-blog.csdnimg.cn/blog_migrate/a5a19f52a54fcecb612b134acf1a9a6f.png

搜索地址:

https://i-blog.csdnimg.cn/blog_migrate/86dc803e0dd47bf61a0938dc999e75d2.png

实际开发者工具中截图:

https://i-blog.csdnimg.cn/blog_migrate/51a2262d0fd5bb23a3643196c2ec0972.png

坐标地图:

https://i-blog.csdnimg.cn/blog_migrate/660f83fddef812a81f1d751094f9c73c.png

wxml:

https://i-blog.csdnimg.cn/blog_migrate/71648e20917e441f9e7a262cc0e67e8c.png

最终展示: 点击搜索周边KFC就出现红色的预设值坐标的地址。

https://i-blog.csdnimg.cn/blog_migrate/63745f13a83dbc308efdab6ff8f96dfa.png

具体代码:

map.js

// 引入SDK核心类
var QQMapWX = require('../../libs/qqmap-wx-jssdk.js');
Page({
  data: {
    markers: []
  },

  onLoad: function () {
    // 实例化API核心类
    this.qqmapsdk = new QQMapWX({
      key: '************************ // 替换为你的QQ地图SDK密钥
    });
  },

  // 事件触发,调用接口
  nearby_search: function () {
    var _this = this;
    // 调用接口
    this.qqmapsdk.search({
      keyword: 'kfc',  // 搜索关键词
      location: '39.980014,116.313972',  // 设置周边搜索中心点
      success: function (res) { // 搜索成功后的回调
        var mks = [];
        for (var i = 0; i < res.data.length; i++) {
          mks.push({ // 获取返回结果,放到mks数组中
            title: res.data[i].title,
            id: parseInt(res.data[i].id), // 将 id 转换为整数形式
            latitude: res.data[i].location.lat,
            longitude: res.data[i].location.lng,
            iconPath: "/assets/icon/position.png", // 图标路径
            width: 20,
            height: 20
          });
        }
        _this.setData({ // 设置markers属性,将搜索结果显示在地图中
          markers: mks
        });
      },
      fail: function (res) {
        console.log('搜索失败', res);
      },
      complete: function (res) {
        console.log('搜索完成', res);
      }
    });
  }
});

wxml:

<!--绑定点击事件-->
<button bindtap="nearby_search">搜索周边KFC</button>
<!--地图容器-->
<map id="myMap"
   markers="{{markers}}"
   style="width:100%;height:300px;"
   longitude="116.313972"
   latitude="39.980014" scale='16'>
</map>

注意:

1 调用API有次数和额度限制。

2 调用的接口要开通相应的接口权限。


示例2:  “关键词输入提示”

https://i-blog.csdnimg.cn/direct/4793a414202647dca936d4da4c4e6a6c.png

接口调用说明:

https://i-blog.csdnimg.cn/direct/a5714fb3f1ec4ce3a35144a718b4e607.png

前往开通配额:

https://i-blog.csdnimg.cn/direct/fb5adca7bff54d5eaec74e0f7c83221a.png

代码:

wxml:

https://i-blog.csdnimg.cn/direct/1877749154c24dd0b5336164a582fab0.png

实际wxml:

https://i-blog.csdnimg.cn/direct/abc5b02f23d34c5088ff73597333de3a.png

**.js 注意js代码不要全部拷贝,而是将methods的部分放在Page()中:

https://i-blog.csdnimg.cn/direct/9b66cfea04454992ad78489f635c9be7.png

实际**.js:

https://i-blog.csdnimg.cn/direct/3ae7b6d80b9a4d8d8989fe1d67e9a3a4.png

最后展示:

https://i-blog.csdnimg.cn/direct/eefcd54951974bb7a6e5c42443910156.png


调用WebService API

https://i-blog.csdnimg.cn/direct/c52f3ecd6a62448cabe857dabff073c9.png

举例:定位服务 –IP定位

https://i-blog.csdnimg.cn/direct/c92dd51d2f0b4aa4ad620b3a93cd3a6c.png

wxml:

<view class="container">
  <view class="map-container">
    <map id="map" latitude="{{latitude}}" longitude="{{longitude}}" markers="{{markers}}" style="width: 100%; height: 400px;"></map>
  </view>
  <view class="info-container">
    <view class="info-item">
      <text class="info-label">国家:</text>
      <text class="info-value">{{nation}}</text>
    </view>
    <view class="info-item">
      <text class="info-label">省份:</text>
      <text class="info-value">{{province}}</text>
    </view>
    <view class="info-item">
      <text class="info-label">城市:</text>
      <text class="info-value">{{city}}</text>
    </view>
  </view>
</view>

js:

Page({
  data: {
    latitude: 0, // 地图中心点纬度
    longitude: 0, // 地图中心点经度
    markers: [], // 地图标记点
    nation: '', // 国家
    province: '', // 省份
    city: '', // 城市
  },

  onLoad: function () {
    // 发起获取当前IP定位信息的请求
    this.getLocationByIP();
  },

  getLocationByIP: function () {
    // 替换成你自己申请的腾讯地图API密钥
    const key = '************************';
    const apiUrl = `https://apis.map.qq.com/ws/location/v1/ip?key=${key}`;

    wx.request({
      url: apiUrl,
      method: 'GET',
      success: (res) => {
        console.log('IP定位结果:', res.data);
        if (res.data.status === 0) {
          const { location, ad_info } = res.data.result;
          const { lat, lng } = location;
          const { nation, province, city } = ad_info;

          // 更新页面数据,显示定位信息
          this.setData({
            latitude: lat,
            longitude: lng,
            markers: [{
              id: 1,
              latitude: lat,
              longitude: lng,
              title: city,
              iconPath: '/images/location.png', // 可自定义标记图标
              width: 30,
              height: 30
            }],
            nation: nation,
            province: province,
            city: city
          });
        } else {
          wx.showToast({
            title: '定位失败,请稍后重试',
            icon: 'none',
            duration: 2000
          });
        }
      },
      fail: (error) => {
        console.error('请求失败:', error);
        wx.showToast({
          title: '网络请求失败,请检查网络后重试',
          icon: 'none',
          duration: 2000
        });
      }
    });
  }
});

wxss:

.container {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  padding: 20px;
}

.map-container {
  width: 100%;
  margin-bottom: 20px;
}

.info-container {
  width: 100%;
  background-color: #f0f0f0;
  padding: 10px;
  border-radius: 8px;
}

.info-item {
  display: flex;
  flex-direction: row;
  margin-bottom: 5px;
}

.info-label {
  font-weight: bold;
}

.info-value {
  margin-left: 5px;
}

最终展示:

https://i-blog.csdnimg.cn/direct/34f86115a3034b4aa9f245bf1d8db9ff.png