微信小程序实现指定景点周边的美食、酒店等搜索

本文详细介绍如何使用腾讯地图位置服务微信小程序JavaScript SDK进行开发,包括申请开发密钥、地址解析及周边搜索功能实现,通过具体代码示例展示地图显示、地点搜索等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下为效果图,使用的是腾讯地图位置服务微信小程序JavaScript SDK,首先要申请腾讯地图位置服务的开发密钥,然后进行开发。

wxml:

<view style='width:100%;height:{{height}}px;'>
  <map id="map" longitude='{{poi.longitude}}' latitude='{{poi.latitude}}' scale='16' markers='{{markers}}' style='width:100%;height:{{height}}px;' show-location bindmarkertap='gotoHere'></map>
  <view class='nav'>
    <button bindtap='search' data-type='酒店' class='nav-but'>酒店</button>
    <button bindtap='search' data-type='美食' class='nav-but'>美食</button>
    <button bindtap='search' data-type='书店' class='nav-but'>书店</button>
    <button bindtap='search' data-type='商城' class='nav-but'>商城</button>
  </view>
</view>
<view class='info'>
  <navigator wx:for="{{perimeter}}" url="../routes/routes?latitude={{startlat}}&&longitude={{startlng}}&&latitude2={{item.location.lat}}&&longitude2={{item.location.lng}}"  class="weui-media-box weui-media-box_appmsg" hover-class="weui-cell_active">
      <view class="weui-media-box__bd weui-media-box__bd_in-appmsg">
        <view class="weui-media-box__title">{{item.title}}</view>
          <view class="weui-media-box__desc">位置:{{item.address}} </view> 
      </view>
  </navigator>
</view>

js页面的主要函数有两个,一个是将具体地址转为经纬度的地址解析函数;一个是根据指定经纬度以及关键词查找周边相关搜索。

var QQMapWX = require('../../utils/qqmap-wx-jssdk.js');
var qqmapsdk;
var startlat;
var startlng;

Page({
  data: {
    height:"400",
    perimeter:[]
  },
  onLoad: function (options) {
    var address = options.address;
    // 实例化API核心类
    qqmapsdk = new QQMapWX({
      key: 'IBCBZ-XXXXXXXXXXXXXXXXXXXXX'
    });
    this.addressGeocoder(address);
  },
  search:function(e){
    var _this = this;
    var a = e.target.dataset.type;
    //console.log("a="+a);
    _this.nearby_search(a);
  },
  //根据地址转为经纬度
  addressGeocoder:function(address){
    var _this = this;
    qqmapsdk.geocoder({
      address:address,
      success:function(res){
        console.log("res="+res);
        var res = res.result;
        var latitude = res.location.lat;
        var longitude = res.location.lng;
        //根据地址解析在地图上标记解析地址位置
        _this.setData({
          markers:[{
            id:0,
            title:res.title,
            latitude:latitude,
            longitude:longitude,
            iconPath:'../../images/marker_checked.png',
            width:20,
            height:20
          }],
          poi:{
            latitude:latitude,
            longitude:longitude
          },
          startlat:latitude,
          startlng:longitude
        });
      },
      fail:function(error){
        console.error("error="+error);
      },
      complete:function(res){
        console.log("complete="+res);
      }
    })
  },
  //周边地点搜索
  nearby_search:function(keyword){
    var _this = this;
    qqmapsdk.search({
      keyword:keyword,
      location:_this.data.poi,
      success:function(res){
        var obj = JSON.stringify(res);
        console.log("obj="+obj);
        var mks = [];
        for(var i = 0; i <res.data.length; i++){
          mks.push({
            title:res.data[i].location.lat,
            id:res.data[i].id,
            latitude:res.data[i].location.lat,
            longitude:res.data[i].location.lng,
            iconPath:"../../images/marker.png",
            width:20,
            height:20,
            callout:{
              content: res.data[i].title,
              color:'#000',
              display:'ALWAYS'
            }
          })
        }
        _this.setData({
          //markers:mks
          markers:mks,
          perimeter:res.data
        })
      },
      fail:function(res){
        console.log("fail="+res);
      },
      complete:function(res){
        console.log("complete="+res);
      }

    });
  },
  gotoHere:function(res){
    var obj = JSON.stringify(res);
    console.log("gotoHere="+obj);
  },
  onShow: function () {

  }
})

暂告一段落,下一篇写指定景点到所选择的的周边的导航。。。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值