微信小程序实现地图功能(腾讯地图)

微信小程序实现地图功能(腾讯地图)

主要功能

通过微信 API 获取用户当前位置信息
使用腾讯地图 API 将经纬度转换为地址信息
显示当前位置信息以及周围的 POI(兴趣点)

代码实现

index.wxml

<!-- index.wxml -->
<view class="container">
  <view class="header">
    <text class="title">当前位置</text>
    <button class="button" bindtap="refreshLocation">刷新</button>
  </view>
  <view class="address">
    <text class="label">地址:</text>
    <text>{
    
    {
    
     address }}</text>
  </view>
  <view class="poi">
    <text class="label">周边兴趣点:</text>
    <scroll-view class="poi-list" scroll-y="true">
      <block wx:for="{
    
    { poiList }}" wx:key="index">
        <view class="poi-item">{
    
    {
    
     item.title }}</view>
      </block>
    </scroll-view>
  </view>
</view>

index.wxss

/* index.wxss */
.container {
    
    
  display: flex;
  flex-direction: column;
  align-items: center;
}

.header {
    
    
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  padding: 20px;
}

.title {
    
    
  font-size: 18px;
  font-weight: bold;
}

.address,
.poi {
    
    
  display: flex;
  flex-direction: row;
  align-items: center;
  padding: 10px;
}

.label {
    
    
  font-weight: bold;
  margin-right: 10px;
}

.address text,
.poi text {
    
    
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.poi-list {
    
    
  height: 200px;
  margin-left: 10px;
}

.poi-item {
    
    
  padding: 5px 0;
}

index.js

// index.js
const QQMapWX = require('./libs/qqmap-wx-jssdk.min');

Page({
    
    
  data: {
    
    
    address: '正在获取地址信息...',
    poiList: []
  },
  onLoad() {
    
    
    this.qqmapsdk = new QQMapWX({
    
    
      key: '你的腾讯地图API密钥'
    });
    this.refreshLocation();
  },
  refreshLocation() {
    
    
    wx.getLocation({
    
    
      type: 'wgs84',
      success: (res) => {
    
    
        const {
    
     latitude, longitude } = res;
        this.setData({
    
    
          address: '正在获取地址信息...',
          poiList: []
        });
        this.qqmapsdk.reverseGeocoder({
    
    
          location: {
    
    
            latitude,
            longitude
          },
          success: (res) => {
    
    
            const {
    
     formatted_addresses: {
    
     recommend }, pois } = res.result;
            this.setData({
    
    
              address: recommend,
              poiList: pois
            });
          },
          fail: () => {
    
    
            this.setData({
    
    
              address: '获取地址信息失败',
              poiList: []
            });
          }
        });
      },
      fail: () => {
    
    
        this.setData({
    
    
          address: '获取位置信息失败',
          poiList: []
        });
      }
    });
  }
});

解析

使用了腾讯地图 API 和微信 API 来获取当前位置信息和周围的 POI。腾讯地图 API 用于将经纬度转换为地址信息,微信API 用于获取用户当前位置信息。

在示例中,我们首先在 onLoad 方法中初始化了 QQMapWX 对象,这个对象用于调用腾讯地图 API。然后,在refreshLocation 方法中,我们首先调用 wx.getLocation 方法获取用户当前位置信息,然后通过 QQMapWX对象调用 reverseGeocoder 方法获取该位置的地址信息和周围的POI。最后,我们将这些信息绑定到页面的数据中,并在页面中进行渲染。
注意,在使用腾讯地图 API 之前,你需要先注册一个腾讯云账号,并申请腾讯地图 API 密钥。具体的申请步骤可以参考腾讯地图 API的官方文档。

到这里也就结束了,希望对您有所帮助。

猜你喜欢

转载自blog.csdn.net/weixin_71893790/article/details/135175340