vue3+ts+amap/amap-jsapi-loader实现高德地图搜索选取地点

news/2024/11/25 6:25:26/

1.安装amap/amap-jsapi-loader

npm i amap-jsapi-loader --save

2.注册高德api

官网地址:高德开放平台 | 高德地图API (amap.com)

注册之后点击右上角控制台,在如下位置添加key

按下图操作生成属于你的key(后面要用)

 

 3.在页面使用

创建一个组件

1.页面构建

html页面如下,一个容器包裹一个输入框,分别赋予id,container是地图容器

<div id="container" style="width: 100%;height: 600px;position: relative"><inputv-model="keyword"class="keyword"id="keyword"placeholder="请输入搜索位置"style="position: absolute;z-index: 99;"/></div></div>

2.引入amap/amap-jsapi-loader

这里我直接在页面内引用

import AMapLoader from "@amap/amap-jsapi-loader";

3.初始化地图

import AMapLoader from "@amap/amap-jsapi-loader";
import { reactive, ref, shallowRef} from 'vue'const keyword = ref('')
// 存储搜索用的数据
const form: any = reactive({address: '',
})
const ininMap = () => {AMapLoader.load({key: 'your key',//api服务key--另外需要在public中使用安全密钥!!!version: '1.4.4',// 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15plugins: ['AMap.PlaceSearch', 'AMap.AutoComplete']// 需要使用的的插件列表}).then((AMap) => {map = new AMap.Map('container', {resizeEnable: true,zoom: 9.5, // 地图显示的缩放级别center: [117.2, 31.8]//中心点})}
}

这里的key就是刚刚申请的key,填上即可

另外,还需在项目的public文件夹的index.html文件里添加安全密钥,代码如下

<!DOCTYPE html>
<html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1.0"><link rel="icon" href="<%= BASE_URL %>favicon.ico"><title><%= htmlWebpackPlugin.options.title %></title></head><body><script>window._AMapSecurityConfig = {securityJsCode:'你的安全密钥',};//在这里添加</script><noscript><strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><!-- built files will be auto injected --></body>
</html>

配置完成了接下来就是完成搜索框的配置

代码如下

const ininMap = () => {AMapLoader.load({key: 'your key',//api服务key--另外需要在public中使用安全密钥!!!version: '1.4.4',// 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15plugins: ['AMap.PlaceSearch', 'AMap.AutoComplete']// 需要使用的的插件列表}).then((AMap) => {map = new AMap.Map('container', {resizeEnable: true,zoom: 9.5, // 地图显示的缩放级别center: [117.2, 31.8]})AMap.plugin(['AMap.Autocomplete', 'AMap.PlaceSearch', 'AMap.Geocoder'],function (
callback: ((this: MediaQueryList, ev: MediaQueryListEvent) => any) | null) {const autoOptions = {input: 'keyword' // 使用联想输入的input的id}const autocomplete = new AMap.Autocomplete(autoOptions)const placeSearch = new AMap.PlaceSearch({map: map})const geocoder = new AMap.Geocoder({radius: 1000,extensions: 'all'})AMap.event.addListener(autocomplete, 'select', function (e) {placeSearch.setCity(e.poi.adcode)placeSearch.search(e.poi.name, function (status, result) {const pois = result.poiList.poisfor (let i = 0; i < pois.length; i++) {if (pois[i].name === e.poi.name) {console.log('搜索结果', pois[i])geocoder.getAddress([pois[i].location.lng, pois[i].location.lat],function (status, result) {console.log(result)if (status === 'complete' && result.info === 'OK') {form.address = result.regeocode.formattedAddress} else {form.address = ''}})}}})})})}).catch((e) => {})
}

页面完整代码如下

<template><div class="box"><div id="container" style="width: 100%;height: 600px;position: relative"><inputv-model="keyword"class="keyword"id="keyword"placeholder="请输入搜索位置"style="position: absolute;z-index: 99;"/></div></div>
</template><script setup lang="ts">
import AMapLoader from "@amap/amap-jsapi-loader";
import { reactive, ref, shallowRef} from 'vue'const keyword = ref('')
// 存储搜索用的数据
const form: any = reactive({address: '',
})
let map = shallowRef(null)
const ininMap = () => {AMapLoader.load({key: 'your key',//api服务key--另外需要在public中使用安全密钥!!!version: '1.4.4',// 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15plugins: ['AMap.PlaceSearch', 'AMap.AutoComplete']// 需要使用的的插件列表}).then((AMap) => {map = new AMap.Map('container', {resizeEnable: true,zoom: 9.5, // 地图显示的缩放级别center: [117.2, 31.8]})AMap.plugin(['AMap.Autocomplete', 'AMap.PlaceSearch', 'AMap.Geocoder'],function (callback: ((this: MediaQueryList, ev: MediaQueryListEvent) => any) | null) {const autoOptions = {input: 'keyword' // 使用联想输入的input的id}const autocomplete = new AMap.Autocomplete(autoOptions)const placeSearch = new AMap.PlaceSearch({map: map})const geocoder = new AMap.Geocoder({radius: 1000,extensions: 'all'})AMap.event.addListener(autocomplete, 'select', function (e) {placeSearch.setCity(e.poi.adcode)placeSearch.search(e.poi.name, function (status, result) {const pois = result.poiList.poisfor (let i = 0; i < pois.length; i++) {if (pois[i].name === e.poi.name) {console.log('搜索结果', pois[i])geocoder.getAddress([pois[i].location.lng, pois[i].location.lat],function (status, result) {console.log(result)if (status === 'complete' && result.info === 'OK') {form.address = result.regeocode.formattedAddress} else {form.address = ''}})}}})})})}).catch((e) => {})
}ininMap()</script>

 完成效果图

 


http://www.ppmy.cn/news/427050.html

相关文章

Python根据地理位置,得到省市区(高德地图api)

ᵕ̈ ᑋᵉᑊᑊᵒ 第一次写博客&#xff0c;主要想记录一下自己学习的过程&#xff0c;希望可以互相探讨哈&#xff01; 这个文章是我在工作中碰到的问题&#xff0c;主要诉求是根据一些具体的地理位置&#xff0c;得出其所在的省市区。我的解决方法附在下面&#xff0c;但还是不…

Vue-高德地图的基本使用(@amap/amap-jsapi-loader)

高德使用步骤 1、注册并登录高德开放平台2、 安装高德依赖3、在需要的页面引入该依赖4 .初始化地图1、设置一个地图容器并设置大小2、初始化地图 5、效果图6、 完整代码 1、注册并登录高德开放平台 高德开放平台: 高德开放平台 首先&#xff0c;注册开发者账号&#xff0c;成…

关于arcgis打开.dat文件

关于arcgis打开.dat文件 利用envi classic 利用envi classic 打开envi classic&#xff0c;利用File &#xff0c;open image file 打开.dat文件。 如图为分类结果.dat文件。 再利用file&#xff0c;save file as &#xff0c;envi standard进行图片另存。 另存后的.dat文…

高德地图--AMap.DistrictSearch

我想要绘制某个区域的地图 AMap.DistrictSearch 用于行政区域的查询&#xff0c;但是直接将 高德地图上的 demo 拷贝过去&#xff0c;没有效果&#xff0c;原来是 秘钥没加&#xff08;注意不是key,key已经加了&#xff09; 在引入 地图 资源之前加入 <script type"…

AMap(高德官方图层)

实现代码&#xff1a; <!doctype html> <html> <head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"initial-scale1.0, user-scal…

AMap(创建基础地图)

实现代码 <!doctype html> <html> <head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"initial-scale1.0, user-scalableno, widt…

vue-amap安装和使用

之前分享了异步加载高德地图api的用法&#xff0c;现在记录一下vue-amap的用法。 vue-amap 是饿了么开源的一套基于 Vue 2.0 和高德地图的地图组件。 数据状态与地图状态单向绑定&#xff0c;开发者无需关心地图的具体操作。 官方文档&#xff1a;组件 | vue-amap 步骤如下&…

高德地图No implementation found for long com.autonavi.amap.mapcore.MapCore

此篇博客最后更新时间写自2016.5.18。当下高德地图jar版本为3.3.1。 使用高德地图碰到此问题&#xff0c;纠结许久&#xff08;接近4个多小时&#xff09;。 记录在此&#xff0c;希望遇到相同问题的读者可以有所借鉴。 错误截图&#xff1a; 导致问题的原因主要有两种&#x…