博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信小程序----map组件实现检索【定位位置】周边的POI
阅读量:4559 次
发布时间:2019-06-08

本文共 5320 字,大约阅读时间需要 17 分钟。

声明

bug: 页面顶部分类【汽车服务、汽车销售等】列表和页脚的详细地址在真机测试是会出现不显示问题?

造成原因:在小程序map组件的同一区域,map组件的视图层比普通的文本视图层要高,所以在真机会遮挡!
解决办法:将该文本视图采用,放在map中。
感谢: 感谢Lrj_estranged指出问题!

效果图

这里写图片描述

实现方法

  1. 地图采用微信小程序提供的map组件;
  2. 周边的数据坐标点通过高德地图提供的API接口,获取定位位置的周边或者指定位置周边的数据。

WXML

{
{
item.name}}
{
{
name}}
{
{
address}}

WXSS

.map_container{  width: 100%;  height: 100%;  position: fixed;  top: 0;  bottom: 0;  left: 0;  right: 0;}.map{  width: 100%;  height: 100%;}.map-tab-bar{  position: absolute;  top: 0;  left: 0;  width: 100%;  z-index: 1000;  font-size: 0;  background-color: #fff;}.map-hide{
display: none;}.map-foot{ top: auto; bottom: 0; padding: 0 10px;}.map-name{ height: 80rpx; line-height: 80rpx; font-size: 35rpx; overflow: hidden;}.map-address{ height: 60rpx; line-height: 60rpx; font-size: 25rpx; overflow: hidden;}.map-tab-li{ display: inline-block; width: 25%; overflow: hidden; height: 70rpx; line-height: 70rpx; text-align: center; font-size: 30rpx; color: #333;}.map-tab-li.active{
color: #fff;background-color: lightgreen;border-radius: 5px;}

JS

var app = getApp();var amap = app.data.amap;var key = app.data.key;Page({  data: {    aroundList: [      {        name: '汽车服务',        id: '010000'      },      {        name: '汽车销售',        id: '020000'      },      {        name: '汽车维修',        id: '030000'      },      {        name: '摩托车',        id: '040000'      },      {        name: '餐饮',        id: '050000'      },      {        name: '购物',        id: '060000'      },      {        name: '生活',        id: '070000'      },      {        name: '体育休闲',        id: '080000'      },      {        name: '医疗保健',        id: '090000'      },      {        name: '住宿',        id: '100000'      },      {        name: '风景名胜',        id: '110000'      },      {        name: '商务住宅',        id: '120000'      }    ],    status:null,    latitude: null,    longitude: null,    isShow: false,    markers: [],    points: [],    location: '',    name:'',    address: ''  },  onLoad: function () {    // 页面加载获取当前定位位置为地图的中心坐标    var _this = this;    wx.getLocation({      success(data) {        if (data) {          _this.setData({            latitude: data.latitude,            longitude: data.longitude,            markers:[{              id:0,              latitude: data.latitude,              longitude: data.longitude,              iconPath: '../../src/images/ding.png',              width: 32,              height: 32            }]          });        }      }    });  },  getType(e) {
//获取选择的附近关键词,同时更新状态 this.setData({ status: e.currentTarget.dataset.type}) this.getAround(e.currentTarget.dataset.keywords,e.currentTarget.dataset.type); }, getAround(keywords,types) {
//通过关键词获取附近的点,只取前十个,同时保证十个点在地图中显示 var _this = this; var myAmap = new amap.AMapWX({ key: key }); myAmap.getPoiAround({ iconPath: '../../src/images/blue.png', iconPathSelected: '../../src/images/ding.png', querykeywords: keywords, querytypes: types, location: _this.data.location, success(data) { if (data.markers) { var markers = [], points = []; for (var value of data.markers) { if (value.id > 9) break; if(value.id == 0){ _this.setData({ name: value.name, address: value.address, isShow: true }) } markers.push({ id: value.id, latitude: value.latitude, longitude: value.longitude, title: value.name, iconPath: value.iconPath, width: 32, height: 32, anchor: { x: .5, y: 1 }, label: { content: value.name, color: 'green', fontSize: 12, borderRadius: 5, bgColor: '#fff', padding: 3, x: 0, y: -50, textAlign: 'center' } }); points.push({ latitude: value.latitude, longitude: value.longitude }) } _this.setData({ markers: markers, points: points }) } }, fail: function (info) { wx.showToast({title: info}) } }) }});

总结

  1. 由于是移动端,所以人为限制只显示了9条周边数据,防止重叠部分太多。
  2. 添加指定位置的周边的方法—-添加一个input,将给的关键字进行搜索,然后返回坐标,改变地图中心坐标。
  3. 改变中心坐标还有采用微信小程序自己的API(wx.chooseLocation),改变地图中心坐标。参考:
  4. 高德地图提供API和微信小程序提供API的优劣:1、目前高德提供的API返回数据很快,最少目前比微信小程序自己的快很多;2、缺点也很明显就是由于是外部提供的,所以需要进行对应配置,麻烦;3、微信小程序提供的API优势就是属于本身,不用额外配置,如果以后优化了,更好。
    实例:

用高德地图提供的 getInputtips 接口,搜索关键字和城市,返回的坐标,然后改变地图中心坐标。
// 页面加载以输入地址为地图的中心坐标// 假如输入的是:成都 欧尚庭院myAmap.getInputtips({  keywords: '欧尚庭院',  city: '成都',  success(res) {    var tip = res.tips[0];    var lo = tip.location.split(',')[0];    var la = tip.location.split(',')[1];    _this.setData({      latitude: la,      longitude: lo,      location: tip.location,      markers: [{        id: 0,        latitude: la,        longitude: lo,        iconPath: '../../src/images/ding.png',        width: 32,        height: 32      }]    })  }})

其他

转载于:https://www.cnblogs.com/linewman/p/9918463.html

你可能感兴趣的文章
读取短信回执
查看>>
EF 数据初始化
查看>>
PreparedStatement与Statement
查看>>
WebService -- Java 实现之 CXF ( 使用CXF工具生成client 程序)
查看>>
Android学习--网络通信之网络图片查看器
查看>>
[LeetCode] Excel Sheet Column Number
查看>>
安卓广播接收者
查看>>
999线监控
查看>>
Redis在python中的使用
查看>>
理解class.forName()
查看>>
每日一小练——数值自乘递归解
查看>>
二叉搜索树 (BST) 的创建以及遍历
查看>>
MyBatis/Ibatis中#和$的区别
查看>>
【JAVASCRIPT】React学习-组件生命周期
查看>>
win 64 文件操作
查看>>
Java范例集锦(二)
查看>>
C语言变量和常量
查看>>
LInuxDay8——shell脚本编程基础
查看>>
topcoder 673
查看>>
Java中一些常用的类,包,接口
查看>>