小程序展示附近的景点,酒店等信息

有时候会用到像下图这样的在某个页面中用map组件展示附近的一些景点,酒店等
在这里插入图片描述

关键代码

1.map组件

官网介绍

<map longitude="{{ longitude}}" latitude="{{ latitude}}" scale="8"  markers="{{markers}}"  style="width: 100%; height: 500px;"></map>

这里主要用到这几个属性

longitude中心经度
latitude中心维度
scale缩放级别
markers标记点

markers数组对象中包含内容

longitude经度
latitude维度
iconPath显示的图标
title标注点名
2.获取当前位置

wx.getLocation
拿到当前的经纬度,用于

  • 提供map组件当前的中心维度
  • 为后面的推荐提供范围
wx.getLocation({
 type: 'wgs84',
 success (res) {
  that.setData({
         latitude : res.latitude,
         longitude : res.longitude
      })
 }
})
3.换取推荐

微信小程序JavaScript SDK上申请关键的开发密钥和下载所需要的js文件

// 引入SDK核心类
var QQMapWX = require('../../utils/qqmap-wx-jssdk.js');
//官网下载的jsSDK文件,地址:http://3gimg.qq.com/lightmap/xcx/jssdk/qqmap-wx-jssdk1.2.zip

// 实例化API核心类
var qqmapsdk = new QQMapWX({
    key: '开发密钥(key)' // 必填,腾讯位置服务官网上的key
});



 qqmapsdk.getSuggestion({
        //获取输入框值并设置keyword参数
        keyword: '景区', //用户输入的关键词,可设置固定值,如keyword:'KFC'
        location:res.latitude+','+res.longitude,//按官方要求将获取的当前经纬度转换成"维度,精度的格式"
        success: function(res) {//搜索成功后的回调
          console.log(res);
          var sug = [];
          for (var i = 0; i < res.data.length; i++) {
            sug.push({ // 获取返回结果,放到sug数组中
              title: res.data[i].title,
              iconPath: "../../utils/ding.png",
              latitude: res.data[i].location.lat,
              longitude: res.data[i].location.lng
            });
          }
          that.setData({ //设置suggestion属性,将关键词搜索结果以列表形式展示
            markers: sug
          });
        },
        fail: function(error) {
          console.error(error);
        },
        complete: function(res) {
          console.log(res);
        }
      });

完整代码

wxml:

<map id="map" longitude="{{ longitude}}" latitude="{{ latitude}}" scale="8"  markers="{{markers}}"  style="width: 100%; height: 500px;"></map>

js:

var QQMapWX = require('../../utils/qqmap-wx-jssdk.js');
// 引入SDK核心类
 
// 实例化API核心类
var qqmapsdk = new QQMapWX({
    key: '开发密钥' // 必填,腾讯位置服务官网上的key
});
Page({
  data: {
    markers:[],
    latitude:'',
    longitude:''
  },
onLoad(){
  var that=this
  wx.getLocation({//获取当前位置,用于展示视图中心及推荐范围
    type: 'wgs84',
    success (res) {
      that.setData({
         latitude : res.latitude,
         longitude : res.longitude
      })
      qqmapsdk.getSuggestion({
        //获取输入框值并设置keyword参数
        keyword: '景区', //用户输入的关键词,可设置固定值,如keyword:'KFC'
        location:res.latitude+','+res.longitude,
        success: function(res) {//搜索成功后的回调
          console.log(res);
          var sug = [];
          for (var i = 0; i < res.data.length; i++) {
            sug.push({ // 获取返回结果,放到sug数组中
              title: res.data[i].title,
              iconPath: "../../utils/ding.png",
              latitude: res.data[i].location.lat,
              longitude: res.data[i].location.lng
            });
          }
          that.setData({ //设置suggestion属性,将关键词搜索结果以列表形式展示
            markers: sug
          });
        },
        fail: function(error) {
          console.error(error);
        },
        complete: function(res) {
          console.log(res);
        }
      });
    }
   })
},

})
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苦夏木禾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值