uniapp据关键词,调地图api,显示搜索列表
本文出自:https://www.cnblogs.com/2186009311CFF/p/14312833.html
uniapp插件:https://ext.dcloud.net.cn/plugin?id=3724
h5引用百度api
npm install vue-baidu-map --save
代码:
<template>
<view class="content">
<input class="search-input" placeholder-style="color:#33CCCC" type="text" :placeholder="placeholder" @input="inputChange"
v-model="keyword" @blur="blur" />
<view v-for="(item,index) in searchList" :key="index">
{{item.keyword}}
</view>
<!-- #ifdef H5 -->
<view >
<baidu-map @ready="mapReady">
</baidu-map>
</view>
<!-- #endif -->
</view>
</template>
<script>
//#ifdef APP-PLUS
let mapSearch = weex.requireModule('mapSearch')
// #endif
// 百度地图
//#ifdef H5
import Vue from 'vue'
import BaiduMap from 'vue-baidu-map'
Vue.use(BaiduMap, {
// ak 是在百度地图开发者平台申请的密钥 详见 http://lbsyun.baidu.com/apiconsole/key */
ak: '您的ak'
})
// #endif
export default {
data() {
return {
keyword: '',
placeholder: '请输入搜索内容',
latlgitude: {
latitude: 22.5427624046,
longitude: 114.0579724734,
},
map_search_radius: 60000,
searchList: [],
BMap: null,
map: null,
}
},
onLoad() {
},
methods: {
//监听输入
inputChange(e) {
let that = this;
var keyword = e.detail ;
that.setListByMap(keyword);
},
setListByMap(keyword) {
let that = this;
//#ifdef H5
this.setListByMap_H5(keyword);
// #endif
//#ifdef APP-PLUS
this.setListByMap_app(keyword);
// #endif
},
setListByMap_app(keyword) {
let that = this;
let sList = [];
let latlg = that.latlgitude;
let lat_local = latlg.latitude;
let lng_local = latlg.longitude;
mapSearch.poiSearchNearBy({
point: {
latitude: lat_local,
longitude: lng_local
},
key: keyword,
radius: that.map_search_radius
}, ret => {
console.log(JSON.stringify(ret));
console.log(JSON.stringify(ret.poiList));
console.log(JSON.stringify(ret.poiList.length));
console.log(JSON.stringify(ret.poiList[0]));
console.log(JSON.stringify(ret.currentNumber));
console.log(JSON.stringify(ret.pageIndex));
console.log(JSON.stringify(ret.pageNumber));
// uni.showModal({
// content: JSON.stringify(ret)
// })
var sHr = ret.poiList;
for (let i = 0; i < sHr.length; i++) {
let item = sHr[i];
let obj = {
keyword: item.name,
lat: item.location.latitude,
lng: item.location.longitude,
}
sList.push(obj);
}
//var poi = searchResult.getPoi(0);
console.log(sList)
that.searchList = sList;
})
},
mapReady({
BMap,
map
}) {
this.BMap = BMap;
this.map = map;
},
async setListByMap_H5(keyword) {
console.log('searchResult')
let that = this;
var localSearch = new this.BMap.LocalSearch(this.map);
let sList = [];
localSearch.setSearchCompleteCallback(function(searchResult) {
console.log('searchResult')
console.log(searchResult)
console.log(searchResult.Hr.length)
var sHr = searchResult.Hr;
for (let i = 0; i < sHr.length; i++) {
let item = sHr[i];
let obj = {
keyword: item.title,
lat: item.point.lat,
lng: item.point.lng,
}
sList.push(obj);
}
//var poi = searchResult.getPoi(0);
console.log(sList)
that.searchList = sList;
});
localSearch.search(keyword);
},
blur() {
uni.hideKeyboard()
},
}
}
</script>
<style lang="scss">
page {
background-color: #FFFFFF;
}
.search-input {
font-weight: 400;
flex: 1;
height: 72upx;
line-height: 72upx;
padding-left: 100upx;
font-size: 26upx;
border-radius: 20px;
background: #f0f0f0;
}
</style>
申请高德的key:
https://lbs.amap.com/api/javascript-api/guide/abc/prepare
配置文件配置key

参考链接:
https://blog.csdn.net/cplvfx/article/details/109559363
百度js api sdk :
http://lbsyun.baidu.com/index.php?title=jspopular/guide/helloworld
APP mapSearch说明 :https://ask.dcloud.net.cn/article/37382
uniapp 示例代码:https://github.com/dcloudio/hello-uniapp
APP mapSearch Git 代码:https://github.com/dcloudio/hello-uniapp/blob/master/pages/API/map-search/map-search.nvue
微信小程序:https://blog.csdn.net/Crazy_GirlLL/article/details/112877807
https://lbs.qq.com/miniProgram/jsSdk/jsSdkGuide/methodGetsuggestion
高德:https://lbs.amap.com/api/wx/guide/create-project/config-project

浙公网安备 33010602011771号