麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 課堂 > 小程序 > 正文

微信小程序使用map組件實現檢索(定位位置)周邊的POI功能示例

2020-03-21 16:02:44
字體:
來源:轉載
供稿:網友

本文實例講述了微信小程序使用map組件實現檢索(定位位置)周邊的POI功能。分享給大家供大家參考,具體如下:

聲明

bug: 頁面頂部分類【汽車服務、汽車銷售等】列表和頁腳的詳細地址在真機測試是會出現不顯示問題?

造成原因:在小程序map組件的同一區域,map組件的視圖層比普通的文本視圖層要高,所以在真機會遮擋!

解決辦法:將該文本視圖采用cover-view,放在map中。

感謝: 感謝Lrj_estranged指出問題!

效果圖

微信小程序,map組件,檢索,POI

實現方法

1. 地圖采用微信小程序提供的map組件;

2. 周邊的數據坐標點通過高德地圖提供的API接口,獲取定位位置的周邊或者指定位置周邊的數據。

WXML

<view class="map_container"> <map class="map" longitude="{{longitude}}" latitude="{{latitude}}" include-points="{{points}}" markers='{{markers}}'>   <cover-view class="map-tab-bar">    <cover-viewclass="map-tab-li {{item.id == status ? 'active' : ''}}" bindtap="getType" data-type="{{item.id}}" wx:key="aroundListId" wx:for="{{aroundList}}">{{item.name}}</cover-view>   </cover-view>   <cover-viewclass="map-tab-bar map-foot {{isShow ? '' : 'map-hide'}}">    <cover-viewclass="map-name">{{name}}</cover-view>    <cover-viewclass="map-address">{{address}}</cover-view>   </cover-view> </map></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})   }  }) }});

總結

1. 由于是移動端,所以人為限制只顯示了9條周邊數據,防止重疊部分太多。

2. 添加指定位置的周邊的方法—-添加一個input,將給的關鍵字進行搜索,然后返回坐標,改變地圖中心坐標。

3. 改變中心坐標還有采用微信小程序自己的API(wx.chooseLocation),改變地圖中心坐標。參考:微信小程序實現map路線規劃

4. 高德地圖提供API和微信小程序提供API的優劣:①、目前高德提供的API返回數據很快,最少目前比微信小程序自己的快很多;②、缺點也很明顯就是由于是外部提供的,所以需要進行對應配置,麻煩;③、微信小程序提供的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   }]  }) }})

希望本文所述對大家微信小程序開發有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 4p嗯啊巨肉寝室调教男男视频 | 性感美女一级毛片 | 麻豆视频国产在线观看 | 97超级碰碰人国产在线观看 | 亚洲成人高清电影 | 精品一区二区三区中文字幕老牛 | 欧美人人干 | 久久精品亚洲精品国产欧美kt∨ | 久久艹精品 | 色人阁五月天 | 九九精品视频观看 | 青草av.久久免费一区 | 性盈盈盈影院 | 国产精品视频六区 | 国产精品www | 亚洲一级毛片 | 亚洲一区二区网址 | 国产乱淫a∨片免费观看 | 国产精品一区在线观看 | 中文字幕涩涩久久乱小说 | 深夜激情视频 | 国产精品视频免费网站 | 麻豆传传媒久久久爱 | 国产成人强伦免费视频网站 | 久久国产精品久久久久久电车 | 又黄又爽免费无遮挡在线观看 | 一级一级一级一级毛片 | 91看片成人 | 中文区中文字幕免费看 | 激情亚洲一区二区 | 国产亚洲精彩视频 | 欧洲a级片 | 黄色a级片视频 | 99精品在线免费 | 亚洲国产成人久久一区www妖精 | av在线免费观看中文字幕 | 伦一区二区三区中文字幕v亚洲 | 激情小说激情图片激情电影 | 性高跟鞋xxxxhd4kvideos | 日本不卡一区二区三区在线 | 91成人免费版 |