腾讯地图 使用autocomplete自动化完成 带搜索联想


//html中需要引入腾讯地图api
<script charset="utf-8" type="text/javascript" src="http://map.qq.com/api/js?v=2.exp&key=YOURKEY&libraries=place"></script>

<div class="info-list clearFloat" id="r-result">
   <div class="info-tit fl">地 图</div>
      <input type="text" id="suggestId" name="url" placeholder="请搜索门店地址">
   </div>
<div id="l-map"></div>

// JS
// 腾讯地图
// 腾讯地图API功能
var myLatlng = new qq.maps.LatLng(38.273640,109.720180);
var myOptions = {
    zoom: 12,
    center: myLatlng
};
var map = new qq.maps.Map("l-map",myOptions);
//实例化自动完成,需要引入libraries=place库,不是autocomplete库。
//<script charset="utf-8" type="text/javascript" src="http://map.qq.com/api/js?v=2.exp&key=YOURKEY&libraries=place"></script>
var ap = new qq.maps.place.Autocomplete(document.getElementById('suggestId'));

//调用Poi检索类。用于进行本地检索、周边检索等服务。
var searchService = new qq.maps.SearchService({
    map : map
});
//添加监听事件
qq.maps.event.addListener(ap, "confirm", function(res){
    searchService.search(res.value);
});

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现这个功能,你需要使用腾讯地图提供的JavaScript API,并且结合Vue框架的响应式数据更新机制,实现点击输入框后异步获取地址列表并显示在下拉框中。 以下是一个简单的实现过程: 1. 在Vue组件的mounted生命周期中,使用腾讯地图API加载地图,并创建一个Autocomplete组件用于输入框自动完成搜索。 ```javascript mounted() { // 加载地图 const map = new qq.maps.Map(document.getElementById("map"), { center: new qq.maps.LatLng(39.916527, 116.397128), zoom: 13 }); // 创建Autocomplete组件 const autoComplete = new qq.maps.Autocomplete( document.getElementById("search-input") ); } ``` 2. 监听Autocomplete组件的placechanged事件,当用户选择了一个地址时,触发回调函数,将选中的地址保存在Vue组件的data中,并显示在输入框中。 ```javascript // 监听Autocomplete组件的placechanged事件 qq.maps.event.addListener(autoComplete, "place_changed", function() { // 获取选中的地址数据 const place = autoComplete.getPlace(); // 更新Vue组件的data this.address = { name: place.name, location: { lat: place.geometry.location.lat(), lng: place.geometry.location.lng() } }; }); ``` 3. 根据用户输入的关键字,使用腾讯地图API的搜索服务,异步获取相关地址列表,并保存在Vue组件的data中,用于显示在下拉框中。 ```javascript // 监听输入框的input事件 onInput(event) { const keyword = event.target.value; // 使用腾讯地图API的搜索服务,异步获取相关地址列表 const searchService = new qq.maps.SearchService({ location: "北京市", complete: results => { // 将搜索结果保存在Vue组件的data中 this.addressList = results.map(result => ({ name: result.name, location: { lat: result.location.lat, lng: result.location.lng } })); } }); searchService.search(keyword); } ``` 4. 在模板中,使用v-model指令绑定输入框的值,使用v-for指令循环渲染地址列表。 ```html <template> <div> <input id="search-input" type="text" v-model="keyword" @input="onInput" /> <ul v-if="addressList.length"> <li v-for="(address, index) in addressList" :key="index">{{ address.name }}</li> </ul> </div> </template> ``` 这样,当用户点击输入框时,会触发Autocomplete组件的自动完成搜索,当用户输入关键字时,会异步获取相关地址列表并显示在下拉框中。用户选择一个地址时,会触发placechanged事件,将选中的地址保存在Vue组件的data中,并显示在输入框中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值