高德地图系列(三):vue项目利用高德地图实现地址搜索功能

目录

第一章 效果图

第二章 源代码

第一章 效果图

  • 高德地图为我们提供了搜索联想,以及搜索结果标记,该案例已将基础功能打通,后续我们肯定还会对功能有所修改,想实现自己想要的效果,基本上看高德地图文档对着改就好了(跟我们用别的工具一样做即可) 

第二章 源代码

  • 代码描述如下:
<template>
  <div>
    // 用了蚂蚁金服组件
    <a-input id='tipinput' type="text"></a-input>
    // 地图容器
    <div id="container" ref="amap"></div>
    // 该容器是搜索结果容器,分页,但是需要配置
    <div id="panel"></div>
  </div>
</template>

<script>
import AMapLoader from '@amap/amap-jsapi-loader'
export default {
  data() {
    return {
      map: null,
      placeSearch: null,
      mapModule: null // AMap
    }
  },
  mounted() {
    window._AMapSecurityConfig = {
      securityJsCode: 'key密钥' // 申请key对应的秘钥 -> 注意了,如果不搭配密钥使用,搜索将没有结果
    }
    // 初始化地图
    this.initAMap()
  },
  destroyed() {
    // 销毁地图
    this.map.destroy()
  },
  methods: {
    // 初始化地图函数
    initAMap() {
      const _this = this
      AMapLoader.load({
        key: '申请的key', // 申请好的Web端开发者Key,首次调用 load 时必填
        version: '2.0', // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
        plugins: []
      })
        .then((AMap) => {
          // 保存AMap实例
          _this.mapModule = AMap
          const map = new AMap.Map('container', {
            // 设置地图容器id
            viewMode: '3D', // 默认2d地图模式
            zoom: 12, // 初始化地图级别
            zooms: [5, 30],
            // 可以设置初始化当前位置
            center: [116.397428, 39.90923],
            resizeEnable: true
          })
          // 添加控件
          AMap.plugin(
            [
              'AMap.ElasticMarker',
              'AMap.Scale',
              'AMap.ToolBar',
              'AMap.HawkEye',
              'AMap.MapType',
              'AMap.Geolocation',
              'AMap.AutoComplete',
              'AMap.PlaceSearch'
            ],
            () => {
              map.addControl(new AMap.ElasticMarker())
              map.addControl(new AMap.Scale())
              map.addControl(new AMap.ToolBar())
              map.addControl(new AMap.HawkEye())
              map.addControl(new AMap.MapType())
              map.addControl(new AMap.Geolocation())
            }
          )
          _this.map = map
          // 搜索功能
          _this.toSearch()
        })
        .catch((e) => {
          console.log(e)
        })
    },
    toSearch() {
      const _this = this
      // 实例化AutoComplete
      const autoOptions = {
        // input 为绑定输入提示功能的input的DOM ID,注意这个id要个搜索输入框的id一致
        input: 'tipinput' 
      }
      const autoComplete = new _this.mapModule.AutoComplete(autoOptions)
      autoComplete.on('select', _this.select)// 注册监听,当选中某条记录时会触发
    },
    select(e) {
      const _this = this
      // 无需再手动执行search方法,autoComplete会根据传入input对应的DOM动态触发search
      // { map: _this.map } ==> 这个对象是能配置的 --> 根据官方文档配置即可,需要什么配置什么
      const placeSearch = new _this.mapModule.PlaceSearch({
        map: _this.map
      })
      placeSearch.setCity(e.poi.adcode)
      placeSearch.search(e.poi.name) // 关键字查询查询
    }
}
</script>
<style lang='less' scoped>
#container {
  padding: 0px;
  margin: 0px;
  width: 100%;
  height: 900px;
}
</style>
  •  注意事项:
  1. 需要搭配申请key和的密钥key一起使用
  2. 地图2.0使用的是AMap.AutoComplete记得区分1.x的Autocomplete
  3. 高德地图组件已经能实现搜索事件了,只需要输入框id对应填好即可
  4. 搜索功能还有许多功能,我们可以根据给的典例了解参数(小编认为上面的解释比接口文档更详细),实例文档如下:
  5. 接口文档如下:

 示例文档:获取搜索数据-POI搜索-示例中心-JS API 2.0 示例 | 高德地图API

 

接口文档:参考手册-地图 JS API 2.0 | 高德地图API 

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue高德地图定位按钮功能实现可以分为以下几个步骤: 1. 引入高德地图JavaScript SDK库。在Vue项目中,可以通过npm安装amap-jsapi-loader库,并在入口文件(如main.js)中导入并使用该库加载高德地图的JS API。 2. 在Vue组件中创建地图容器。可以使用AMap.Map()方法创建一个地图的实例并指定容器的id,例如:new AMap.Map('map-container')。 3. 创建定位按钮并绑定相应的点击事件。在Vue组件的template中添加一个按钮元素,并为其添加一个@click事件监听器,用来触发定位功能实现。 4. 实现定位功能。在点击定位按钮时,触发点击事件的处理函数,在该函数中调用高德地图的定位服务API,如AMap.Geolocation()来获取当前位置的经纬度。 5. 将定位的经纬度设置为地图的中心点,并在地图上显示一个标记点。可以使用AMap.Marker()创建一个标记点实例,然后设置其position为定位的经纬度,并添加到地图上。 6. 可以根据需要,将经纬度转换为具体的地址信息,并在页面中显示。可以使用AMap.Geocoder()的逆地理编码功能,将经纬度转换为地址。 具体代码示例: ```vue <template> <div> <button @click="getLocation">定位</button> <div id="map-container"></div> <div>{{location}}</div> </div> </template> <script> import AMapLoader from 'amap-jsapi-loader'; export default { data() { return { map: null, location: '' } }, mounted() { AMapLoader.load({ key: 'your-amap-api-key', version: '2.0' }).then(() => { this.map = new AMap.Map('map-container'); }); }, methods: { getLocation() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition((position) => { const { latitude, longitude } = position.coords; this.map.setCenter([longitude, latitude]); new AMap.Marker({ position: [longitude, latitude], map: this.map }); const geocoder = new AMap.Geocoder(); geocoder.getAddress([longitude, latitude]).then((result) => { this.location = result.regeocode.formattedAddress; }); }); } else { alert('浏览器不支持定位功能'); } } } }; </script> ``` 需要注意的是,代码中的'your-amap-api-key'需要替换为你自己申请的高德地图API的秘钥。另外,在使用定位功能时,需要用户授权浏览器获取其位置信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值