焕焕写的--高德地图导入

这个是vue.js   iview里面的form表单

<FormItem>关键字 <input id="tipinput"/></FormItem>
 <FormItem>
    <input id="tipinput"/></FormItem>//这个input必须跟js里面那个一致,不然没有效果
    <span>详细地址{{ mapAddressInfo }}</span>
</FormItem>
我怕这个高的地图可以有关键字模糊查询提示,然后还有点击地图查询详细地址
这里面有导入高德地图的方法 可以参考这个 https://www.jianshu.com/p/6f9ce597167b
我也说一下----   在你的文件webpack.config.js 加上 
 externals: {
    'AMap': 'AMap'
  },

index.html里面引入 
<script type="text/javascript" src="http://webapi.amap.com/maps?v=1.3&key=YOURKEY"></script>
在你想要引入的文件script里面引入一下import AMap from 'AMap'
然后在method里面写个初始化方法

在data的 return里面先绑定几个值 

      longitude: '',
      latitude: '',
      mapAddressName: '',
      mapAddressInfo: '',


init: function () {
      let that = this;
      let map = new AMap.Map('map_container', {
        // center: [116.397428, 39.90923],
        resizeEnable: true,
        zoom: 10,
        lang: 'zh'
      })
      var placeSearch, placeSearch2;
      AMap.plugin(['AMap.Autocomplete', 'AMap.PlaceSearch'], function () { // 异步同时加载多个插件
        // 输入提示
        var autoOptions = {
          input: 'tipinput' // 刚才说的就是这个input,跟上面的要一一致
        };
        var auto = new AMap.Autocomplete(autoOptions);
        placeSearch = new AMap.PlaceSearch({
          map: map
        }); // 构造地点查询类

        placeSearch2 = new AMap.PlaceSearch({
          pageSize: 1,
          extensions: 'all',
          showCover: false,
          autoFitView: false,
          type: '公司企业|政府机构及社会团体|汽车服务|汽车销售|汽车维修|餐饮服务|购物服务|生活服务|体育休闲服务|医疗保健服务|住宿服务|风景名胜|商务住宅|科教文化服务|交通设施服务|金融保险服务'
        });
        AMap.event.addListener(auto, 'select', function (e) {
          placeSearch.setCity(e.poi.adcode);
          placeSearch.search(e.poi.name); // 关键字查询
        }); // 注册监听,当选中某条记录时会触发
        AMap.event.addListener(placeSearch, 'markerClick', function(e) {
          that.longitude = e.data.location.lng;
          that.latitude = e.data.location.lat;
          that.mapAddressName = e.data.name;
          that.mapAddressInfo = e.data.pname + e.data.cityname + e.data.adname + e.data.address;
          console.log(placeSearch,e.data.pname , e.data.cityname , e.data.adname , e.data.address)
        });
      });
      var geocoder;
      AMap.plugin('AMap.Geocoder', function () {
        geocoder = new AMap.Geocoder();
      });
      map.on('click', function (e) {
        var cpoint = [e.lnglat.lng, e.lnglat.lat]; // 中心点坐标
        placeSearch2.searchNearBy('', cpoint, 200, function (status, result) {
          if (status === 'complete' && result.poiList) {
            let addr = result.poiList.pois[0];
            that.longitude = addr.location.lng;
            that.latitude = addr.location.lat;
            that.mapAddressName = addr.name;
            that.mapAddressInfo = addr.pname + addr.cityname + addr.adname + addr.address;
          } else {
            that.$Message.error(this.$t('ATTENDANCE_MODULE.ERR.err4'));
          }
        });
      });
    },

 

### 使用 `v-if` 实现高德地图组件的条件渲染 为了在 Vue 应用程序中根据条件渲染高德地图组件,可以利用 `v-if` 指令来动态控制地图组件的显示与否。当使用 `v-if` 控制的地图组件销毁并重新创建时,确保每次渲染都拥有独立的地图实例。 下面是一个基于 Vue 3 和 `@vuemap/vue-amap` 插件的例子: ```javascript // main.js 或 setup 文件 import { createApp } from 'vue' import App from './App.vue' import VueAMap, { initAMapApiLoader } from '@vuemap/vue-amap'; import '@vuemap/vue-amap/dist/style.css' initAMapApiLoader({ key: 'YOUR_AMAP_API_KEY', securityJsCode: 'SECURITY_CODE', // 如果需要的话 }) const app = createApp(App) app.use(VueAMap).mount('#app') ``` 对于包含地图组件的单文件组件 (SFC),如下所示: ```html <template> <div class="map-container"> <!-- 地图容器 --> <div v-if="showMap" ref="mapContainer" style="width:100%;height:400px;"></div> <button @click="toggleMap">Toggle Map</button> </div> </template> <script> export default { data() { return { showMap: false, mapInstance: null } }, methods: { toggleMap() { this.showMap = !this.showMap; if(this.showMap && !this.mapInstance){ this.$nextTick(() => { const containerId = this.$refs['mapContainer']; this.mapInstance = new window.AMap.Map(containerId, { zoom: 11, viewMode: "3D", city: "北京", center: [116.397428, 39.90923], features: ["bg", "road", "building"] }); }) } }, } }; </script> ``` 此代码片段展示了如何通过点击按钮切换地图的可见状态,并且仅在首次展示地图时初始化它[^2]。每当 `showMap` 变量变为真并且当前没有地图实例存在时,会调用 `$nextTick()` 方法等待 DOM 更新完成后再创建新的地图对象[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值