vue 高德地图 —— 点标记、信息弹窗、网页导航、获取经纬度及当前城市信息

新建 components/amap.vue 文件,封装高德地图组件:

<template>
    <div>
     <div id="amapcontainer" style="width: 800px; height: 520px"></div>
    </div>
</template>
<script>
import AMapLoader from '@amap/amap-jsapi-loader';
window._AMapSecurityConfig = {
     
  securityJsCode: '' // '「申请的安全密钥」',
}
export default {
     
  name: "purchannel",
  data () {
     
    return {
     
      zoom: 12,
      originX: '',// 当前浏览器定位的位置
      originY: '',
      map: null, //地图实例
      infoWindow: '',
      makerList: [],
      provinceArr: [],
      cityArr: [],
      provinceCode: '',
      cityCode: '',
      storeList: [], //门店列表
    }
  },
  watch: {
      },
  created () {
      },
  mounted () {
      
    // DOM初始化完成进行地图初始化
    this.initAMap()
  },
  methods: {
     
    initAMap () {
     
      AMapLoader.load({
     
        key: "", // 申请好的Web端开发者Key,首次调用 load 时必填
        version: "2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
        plugins: ["AMap.Scale", "AMap.ToolBar", "AMap.ControlBar", 'AMap.Geocoder', 'AMap.Marker',
          'AMap.CitySearch', 'AMap.Geolocation', 'AMap.AutoComplete', 'AMap.InfoWindow'], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
      }).then((AMap) => {
     
        // 获取到作为地图容器的DOM元素,创建地图实例
        this.map = new AMap.Map("amapcontainer", {
      //设置地图容器id
          resizeEnable: true,
          zoom: this.zoom, // 地图显示的缩放级别
          viewMode: "3D", // 使用3D视图
          zoomEnable: true, // 地图是否可缩放,默认值为true
          dragEnable: true, // 地图是否可通过鼠标拖拽平移,默认为true
          doubleClickZoom: true, // 地图是否可通过双击鼠标放大地图,默认为true
          // center: [113.370824, 23.131265], // 中心点坐标  广州
          // mapStyle: "amap://styles/darkblue", // 设置颜色底层
        });

        this.getLocation()
        this.setupMapTool()
        
        
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以通过高德地图JavaScript API 提供的逆地理编码服务来获取标记所在的省市区信息。具体步骤如下: 1. 在 Vue 组件中引入高德地图 JavaScript API: ```javascript <script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.15&key=您申请的key值"></script> ``` 2. 初始化地图对象,并创建标记: ```javascript mounted() { // 初始化地图对象 this.map = new AMap.Map('map-container', { zoom: 10, center: [116.397428, 39.90923] }) // 创建标记 this.marker = new AMap.Marker({ position: [116.397428, 39.90923], map: this.map }) // 监听标记击事件 this.marker.on('click', this.handleMarkerClick) }, ``` 3. 在标记击事件处理函数中获取经纬度,并调用逆地理编码服务解析省市区信息: ```javascript methods: { handleMarkerClick() { // 获取标记经纬度 const position = this.marker.getPosition() // 调用逆地理编码服务解析省市区信息 AMap.plugin('AMap.Geocoder', () => { const geocoder = new AMap.Geocoder({ city: '全国', radius: 1000 }) geocoder.getAddress(position, (status, result) => { if (status === 'complete' && result.regeocode) { const { province, city, district } = result.regeocode.addressComponent console.log(`省份:${province},城市:${city},区县:${district}`) } else { console.log('获取地址失败') } }) }) } } ``` 在逆地理编码服务的回调函数中,可以通过 `result.regeocode.addressComponent` 对象获取到省市区信息。 需要注意的是,如果标记所在的位置距离城市边界比较远,有可能会出现获取不到地址信息的情况,此时需要调整 `radius` 参数的值来扩大逆地理编码服务的范围。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值