当前位置:首页 > VUE

vue实现输入地址

2026-01-08 07:07:44VUE

Vue 实现输入地址功能

在 Vue 中实现输入地址功能,可以通过结合表单输入、地图 API(如高德、百度或 Google Maps)以及地址自动补全等方式完成。以下是几种常见方法:

使用高德地图 API 实现地址输入

注册高德地图开发者账号并获取 API Key,引入高德地图的 JavaScript SDK。

<template>
  <div>
    <input 
      v-model="address" 
      @input="searchAddress" 
      placeholder="请输入地址"
    />
    <div id="map-container"></div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      address: '',
      map: null,
      autoComplete: null
    };
  },
  mounted() {
    this.initMap();
  },
  methods: {
    initMap() {
      const script = document.createElement('script');
      script.src = `https://webapi.amap.com/maps?v=2.0&key=你的高德APIKey`;
      script.onload = () => {
        this.map = new AMap.Map('map-container');
        this.autoComplete = new AMap.AutoComplete({
          input: 'address'
        });
      };
      document.head.appendChild(script);
    },
    searchAddress() {
      if (this.address.length > 2) {
        AMap.plugin('AMap.PlaceSearch', () => {
          const placeSearch = new AMap.PlaceSearch();
          placeSearch.search(this.address, (status, result) => {
            if (status === 'complete') {
              console.log(result);
            }
          });
        });
      }
    }
  }
};
</script>

使用百度地图 API 实现地址输入

类似高德地图,注册百度地图开发者账号并获取 API Key。

<template>
  <div>
    <input 
      v-model="address" 
      @input="searchAddress" 
      placeholder="请输入地址"
    />
    <div id="map-container"></div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      address: '',
      map: null
    };
  },
  mounted() {
    this.initMap();
  },
  methods: {
    initMap() {
      const script = document.createElement('script');
      script.src = `https://api.map.baidu.com/api?v=3.0&ak=你的百度APIKey&callback=initBaiduMap`;
      window.initBaiduMap = () => {
        this.map = new BMap.Map('map-container');
        const localSearch = new BMap.LocalSearch(this.map);
        localSearch.setSearchCompleteCallback((result) => {
          console.log(result);
        });
      };
      document.head.appendChild(script);
    },
    searchAddress() {
      if (this.address.length > 2) {
        const localSearch = new BMap.LocalSearch(this.map);
        localSearch.search(this.address);
      }
    }
  }
};
</script>

使用 Google Maps API 实现地址输入

注册 Google Cloud 账号并启用 Maps JavaScript API 和 Places API。

<template>
  <div>
    <input 
      v-model="address" 
      @input="searchAddress" 
      placeholder="请输入地址"
      ref="addressInput"
    />
    <div id="map-container"></div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      address: '',
      map: null,
      autocomplete: null
    };
  },
  mounted() {
    this.initMap();
  },
  methods: {
    initMap() {
      const script = document.createElement('script');
      script.src = `https://maps.googleapis.com/maps/api/js?key=你的GoogleAPIKey&libraries=places`;
      script.onload = () => {
        this.autocomplete = new google.maps.places.Autocomplete(
          this.$refs.addressInput
        );
        this.autocomplete.addListener('place_changed', () => {
          const place = this.autocomplete.getPlace();
          console.log(place);
        });
      };
      document.head.appendChild(script);
    },
    searchAddress() {
      if (this.address.length > 2) {
        const service = new google.maps.places.PlacesService(this.map);
        service.textSearch({ query: this.address }, (results) => {
          console.log(results);
        });
      }
    }
  }
};
</script>

使用第三方地址选择组件

如果不想直接调用地图 API,可以使用第三方 Vue 组件如 vue-address-picker

安装组件:

npm install vue-address-picker

使用示例:

vue实现输入地址

<template>
  <vue-address-picker v-model="address" />
</template>

<script>
import VueAddressPicker from 'vue-address-picker';

export default {
  components: {
    VueAddressPicker
  },
  data() {
    return {
      address: ''
    };
  }
};
</script>

注意事项

  • 确保在项目中正确引入地图 API 的 SDK。
  • 替换代码中的 API Key 为实际申请的密钥。
  • 根据需求调整地图的显示样式和交互逻辑。
  • 注意 API 的调用频率限制,避免频繁请求。

标签: 地址vue
分享给朋友:

相关文章

vue实现流程

vue实现流程

Vue 实现流程的基本步骤 安装 Vue.js 可以通过 CDN 引入或使用 npm/yarn 安装。 CDN 方式: <script src="https://cdn.jsdelivr.…

vue实现表白

vue实现表白

Vue 实现表白页面 使用 Vue 可以快速创建一个动态、交互式的表白页面。以下是一个简单的实现方案: 基础结构 创建一个 Vue 项目或单文件组件,包含以下核心部分: <template&…

vue 实现排序

vue 实现排序

Vue 实现排序的方法 使用计算属性实现排序 通过计算属性对数组进行排序,可以保持原始数据不变。示例代码展示了如何对列表按名称升序排序: <template> <div>…

vue 实现modal

vue 实现modal

Vue 实现 Modal 的方法 使用 Vue 原生组件 通过 Vue 的组件系统可以轻松实现 Modal。创建一个可复用的 Modal 组件,通过 props 控制显示与隐藏。 <templ…

vue实现尺子

vue实现尺子

Vue 实现尺子组件 实现一个尺子组件可以通过 Canvas 或纯 CSS 完成。以下是两种常见实现方式: 使用 Canvas 绘制尺子 通过 Canvas 动态绘制刻度线和数字,适合需要高精度或动…

vue 分页 实现

vue 分页 实现

Vue 分页实现方法 使用第三方库(如 Element UI) Element UI 提供了现成的分页组件 el-pagination,适合快速集成。 安装 Element UI: npm ins…