微信小程序----map组件实现检索【定位位置】周边的POI
效果图
实现方法
- 地图采用微信小程序提供的map组件;
- 周边的数据坐标点通过高德地图提供的API接口,获取定位位置的周边或者指定位置周边的数据。
WXML
<view class="map_container">
<view class="map-tab-bar">
<view class="map-tab-li {{item.id == status ? 'active' : ''}}" bindtap="getType" data-type="{{item.id}}" wx:key="aroundListId" wx:for="{{aroundList}}">{{item.name}}</view>
</view>
<map class="map" longitude="{{longitude}}" latitude="{{latitude}}" include-points="{{points}}" markers='{{markers}}'></map>
<view class="map-tab-bar map-foot {{isShow ? '' : 'map-hide'}}">
<view class="map-name">{{name}}</view>
<view class="map-address">{{address}}</view>
</view>
</view>
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})
}
})
}
});
总结
- 由于是移动端,所以人为限制只显示了9条周边数据,防止重叠部分太多。
- 添加指定位置的周边的方法—-添加一个input,将给的关键字进行搜索,然后返回坐标,改变地图中心坐标。
- 改变中心坐标还有采用微信小程序自己的API(wx.chooseLocation),改变地图中心坐标。参考:微信小程序—-map路线规划
- 高德地图提供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
}]
})
}
})
微信小程序----map组件实现检索【定位位置】周边的POI的更多相关文章
- 微信小程序map组件z-index的层级问题
说起微信小程序的map组件,可以说是良心之作了,一个组件解决了所以接入地图的所有麻烦,但是在实际小程序的试用过程中还是存在点问题的.如下情景:刚开始接入map组件的时候是在微信开发工具的模拟器上预览的 ...
- 微信小程序~map组件z-index无效
因项目需要,以map为背景,上面悬浮有其他组件.微信开发者工具测试时一切正常,但是真机测试时地图组件却把所有的组件覆盖,检查z-index设置,一切正常,地图组件层级也在这些组件的下面,为什么会被覆盖 ...
- 微信小程序Map组件踩坑日记
刚刚又发生一个bug,搞得我头皮发麻,本来该美滋滋的回家准备度过愉快的周末,瞬间变成了日常修bug,来,开始填坑之路 情景再现: 首先说一说我们项目的需求, 点击下方,弹出抽屉 点击对应的地图打开相应 ...
- 关于微信小程序 textarea组件在fixed定位的模块中随页面移动问题
具体的情况: 在模拟器中没问题,可是在真机下就出现以下问题, <textarea />在一个view盒子中,view盒子是固定定位,页面滑动时候,固定定位的盒子会定在屏幕的相对位置,但 ...
- 微信小程序textarea组件在fixed定位中随页面滚动
如果 textarea 是在一个 position:fixed 的区域,需要显示指定属性 fixed 为 true https://developers.weixin.qq.com/miniprogr ...
- 微信小程序的组件总结
本文介绍微信小程序的组件 视图容器 基础内容 表单组件 导航组件 媒体组件 视图容器 view 布局容器 <view hover-class='bg'>222</view> 可 ...
- Wuss Weapp 一款高质量,组件齐全,高自定义的微信小程序 UI 组件库
Wuss Weapp 一款高质量,组件齐全,高自定义的微信小程序 UI 组件库 文档 https://phonycode.github.io/wuss-weapp 扫码体验 使用微信扫一扫体验小程序组 ...
- Wuss Weapp 微信小程序 UI 组件库
微信小程序 UI 组件库 Github地址 https://github.com/phonycode/wuss-weapp 文档 https://phonycode.github.io/wuss-we ...
- 微信小程序image组件binderror使用例子(对应html、js中的onerror)
官方文档 binderror HandleEvent 当错误发生时,发布到 AppService 的事件名,事件对象event.detail = {errMsg: 'something wrong' ...
随机推荐
- pthread到Win32thread
一.什么是线程. 线程(thread)是为了提高系统内程序的并发(concurrency)执行程度而提出来的概念,它是比进程更小的能够独立运行的基本单位.在引入线程的系统中,线程是处理器调度(sche ...
- zabbix中文乱码的解决办法
配置zabbix,发现中文不能正常显示,出现如下图所示的乱码: 修改方法: 1.从windows下控制面板->字体->选择一种字体例如“新宋体” 2.把它拷贝到zabbix的web端的fo ...
- golang(5)使用beego 开发 api server 和前端同学拆分开发,使用swagger
1,beego api Swagger 是一个规范和完整的框架,用于生成.描写叙述.调用和可视化 RESTful 风格的 Web 服务.整体目标是使client和文件系统作为服务器以相同的速度来更新. ...
- 目的可疑,但方法非常值得学习的书——leo鉴书56
书中提到写作手法绝对值得学习,为此能够打四颗星. 作者是个买直销产品的.靠写字让别人买自己的东西.当中特别强调了卖的多是太空时代的产品,意思就是读者非常可能并不须要,多半是被眼花缭乱的广告词儿骗了 ...
- tomcat在debug模式启动直接提示:弹框无法启动,无报错信息;但直接启动的话,就会有报错信息
今天运行项目,Debug模式启动Tomcat,直接弹框:无法启动(翻译,因为后来整理,所以都忘记当时的截图) 后来尝试直接start,发现不弹框了,但是console有报出错信息. 类似以下错误 20 ...
- html 优化 简谈
一直想写下SEO中关于HTML优化方面的的文章,总算空出这部分时间来了.其实,HTML优化应该是网站内部优化的重点,每个SEOer都需高度重视.根据本人多年实战经验,一般做过HTML优化的网站上线后, ...
- mysql-5.7 innodb_buffer_pool刷新机制详解
一.innodb的脏页刷新机制说明: 1.当innodb中的脏页比例超过innodb_max_dirty_pages_pct_lwm的值时,这个时候innodb就会开始刷新脏页到磁盘. 2.当inno ...
- ToDictionary的用法
上次已经查过一次了,这次又忘了...看来有必要记录一下: linq查询结果经常ToList.ToArray什么的,但是ToDictionary用的比较少,导致经常忘记怎么用... ToDictiona ...
- 网络编程之TCP/UDP及其流程比较(转)
TCP与UDP的区别 基于连接与无连接 对系统资源的要求(TCP较多,UDP少) UDP程序结构较简单 流模式与数据报模式TCP保证数据正确性,UDP可能丢包TCP保证数据顺序,UDP不保证 具体编程 ...
- SpringDaoSupport
@Component public class SuperDAO extends HibernateDaoSupport { @Resource(name="sessionFactory&q ...