vue项目中使用高德地图

这篇具有很好参考价值的文章主要介绍了vue项目中使用高德地图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近做的项目中有个地图选择的功能,如下图所示:

所以在此记录下使用方法,望各位大神指导

vue项目中使用高德地图

我的应用 | 高德控制台第一步:去高德官网去创建一个属于自己的地图应用 (得到key和秘钥)我的应用 | 高德控制台

vue项目中使用高德地图

 这是添加的方式:

准备-入门-教程-地图 JS API | 高德地图API

第二步:获取到属于自己的key和秘钥后,下载地图高德:npm install vue-amap --save 

第三步:在main.js中导入 

vue项目中使用高德地图

VueAMap.initAMapApiLoader({
    key: '你申请的key',
    plugin: [
        'AMap.Scale',
        'AMap.OverView',
        'AMap.ToolBar',
        'AMap.MapType',
        'AMap.PlaceSearch',
        'AMap.Geolocation',
        'AMap.Geocoder',
        'AMap.DrivingPolicy',
        'AMap.Driving',
        "AMap.Autocomplete",
   "AMap.PolyEditor",
   "AMap.CircleEditor",
    ],
    v: '1.4.4',
    uiVersion: '1.0',
})

这里的key是你申请的

第四步:index.html页面头部 添加秘钥

vue项目中使用高德地图​​​​​​​​​​​​​​

<script type="text/javascript">
      window._AMapSecurityConfig = {
          securityJsCode: "你申请的秘钥",
      }
  </script>

 以上步骤完成后,就可以去你对应的页面中使用了

因为我是写的一个组件,所以大家根据自己的情况 

我的组件完整代码:

<template>
    <div class="container">
        <div class="search-box">
            <el-row>
                <el-col :span="16">
                    <el-input v-model="searchKey" id="search" placeholder="请输入地址信息"></el-input>
                </el-col>
                <el-col :span="6">
                    <el-button type="success" plain @click="searchByHand" style="margin-left:20px">搜索位置</el-button>
                </el-col>
            </el-row>

            <div class="tip-box" id="searchTip"></div>
        </div>
        <el-amap class="amap-box" :amap-manager="amapManager" :vid="'amap-vue'" :zoom="zoom" :plugin="plugin"
            :center="center" :events="events">
            <!-- 标记 -->
            <el-amap-marker v-for="(marker, index) in markers" :position="marker" :key="index"></el-amap-marker>
        </el-amap>
    </div>
</template>

<script>
import { AMapManager, lazyAMapApiLoaderInstance } from 'vue-amap'
let amapManager = new AMapManager()
export default {
    data() {
        let self = this
        return {
            address: null,
            searchKey: '',
            amapManager,
            markers: [],
            searchOption: {
                city: '全国',
                citylimit: true
            },
            center: [108.872249, 34.33328],
            zoom: 10,
            lng: 0,
            lat: 0,
            loaded: false,
            markerEvent: {
                click(e) {
                    // console.log(e);
                }
            },
            mapInfo: {
                lng: '',
                lat: '',
                mapText: ''
            },
            events: {
                init() {
                    lazyAMapApiLoaderInstance.load().then(() => {
                        self.initSearch()
                    })
                },
                // 点击获取地址的数据
                click(e) {
                    self.markers = []
                    let { lng, lat } = e.lnglat
                    self.lng = lng
                    self.lat = lat
                    self.center = [lng, lat]
                    self.markers.push([lng, lat])
                    // 这里通过高德 SDK 完成。
                    let geocoder = new AMap.Geocoder({
                        radius: 1000,
                        extensions: 'all'
                    })
                    geocoder.getAddress([lng, lat], function (status, result) {//点击地图显示位置信息
                        if (status === 'complete' && result.info === 'OK') {
                            if (result && result.regeocode) {
                                if (result.regeocode.crosses.length > 0) {
                                    self.mapInfo.lng = result.regeocode.crosses[0].location.lng
                                    self.mapInfo.lat = result.regeocode.crosses[0].location.lat
                                }
                                if (result.regeocode.crosses.length > 0) {
                                    self.mapInfo.lng = result.regeocode.pois[0].location.lng
                                    self.mapInfo.lat = result.regeocode.pois[0].location.lat
                                }
                                self.mapInfo.mapText = result.regeocode.formattedAddress
                                // console.log('地图组件中点击选中的地址为',self.mapInfo)
                                if (self.mapInfo.lng !== '' && self.mapInfo.lat !== '') {
                                    self.$store.state.addersInfo = JSON.stringify(self.mapInfo)
                                }
                                console.log(self.lng, self.lat, "33333333333333333")
                                self.address = result.regeocode.formattedAddress
                                self.searchKey = result.regeocode.formattedAddress
                                self.$nextTick()
                            }
                        }
                    })
                }
            },
            // 一些工具插件
            plugin: [
                {
                    // 定位
                    pName: 'Geolocation',
                    events: {
                        init(o) {
                            // o是高德地图定位插件实例
                            o.getCurrentPosition((status, result) => {
                                if (result && result.position) {
                                    // 设置经度
                                    self.lng = result.position.lng
                                    // 设置维度
                                    self.lat = result.position.lat
                                    // 设置坐标
                                    self.center = [self.lng, self.lat]
                                    self.markers.push([self.lng, self.lat])
                                    // load
                                    self.loaded = true
                                    // 页面渲染好后
                                    self.$nextTick()
                                }
                            })
                        },
                        click(e) {
                            // console.log(e);
                        }
                    }
                },
                {
                    // 工具栏
                    pName: 'ToolBar',
                    events: {
                        init(instance) {
                            // console.log(instance);
                        }
                    }
                },
                {
                    // 鹰眼
                    pName: 'OverView',
                    events: {
                        init(instance) {
                            // console.log(instance);
                        }
                    }
                },
                {
                    // 地图类型
                    pName: 'MapType',
                    defaultType: 0,
                    events: {
                        init(instance) {
                            // console.log(instance);
                        }
                    }
                },
                {
                    // 搜索
                    pName: 'PlaceSearch',
                    events: {
                        init(instance) {
                            // console.log(instance)
                        }
                    }
                }
            ]
        }
    },
    created() {
        this.searchKey = JSON.parse(this.$store.state.addersInfo).mapText;
    },
    watch: {
        "$store.state.addersInfo": {
            handler: function (newVal, oldVal) {
                this.searchKey = JSON.parse(newVal).mapText;
            },
            deep : true
        },
        searchKey(addersText) {
            if (addersText == '') {
                this.$store.state.addersInfo = ''
            }
        }
    },
    methods: {
        // submitAddress() {//确定事件
        //     console.log('经纬度', this.center)
        //     console.log('地址', this.address)
        //     this.mapInfo.lng = this.center[0]
        //     this.mapInfo.lat = this.center[1]
        //     this.mapInfo.mapText = this.address
        //     // console.log(this.mapInfo)
        //     this.$store.state.address = JSON.stringify(this.mapInfo)
        // },
        initSearch() {
            let vm = this
            let map = this.amapManager.getMap()
            AMapUI.loadUI(['misc/PoiPicker'], function (PoiPicker) {
                var poiPicker = new PoiPicker({
                    input: 'search',
                    placeSearchOptions: {
                        map: map,
                        pageSize: 10
                    },
                    suggestContainer: 'searchTip',
                    searchResultsContainer: 'searchTip'
                })
                console.log(poiPicker, "***********")
                vm.poiPicker = poiPicker
                // 监听poi选中信息
                poiPicker.on('poiPicked', function (poiResult) {
                    let source = poiResult.source
                    let poi = poiResult.item
                    if (source !== 'search') {
                        poiPicker.searchByKeyword(poi.name)
                    } else {
                        poiPicker.clearSearchResults()
                        vm.markers = []
                        let lng = poi.location.lng
                        let lat = poi.location.lat
                        let address = poi.cityname + poi.adname + poi.name
                        vm.center = [lng, lat]
                        // console.log(vm.center)
                        vm.markers.push([lng, lat])
                        vm.lng = lng
                        vm.lat = lat
                        vm.address = address
                        vm.searchKey = address
                        // console.log(vm.address)

                        vm.mapInfo.lng = lng
                        vm.mapInfo.lat = lat
                        vm.mapInfo.mapText = vm.address
                        // console.log(vm.mapInfo)
                        vm.$store.state.addersInfo = JSON.stringify(vm.mapInfo)
                    }
                })
            })
        },
        searchByHand() {//点击搜索事件
            if (this.searchKey !== '') {
                this.searchKey = JSON.parse(this.$store.state.addersInfo).mapText;
                this.poiPicker.searchByKeyword(this.searchKey)
            }
        }
    },

}
</script>

<style lang="scss" scoped>
.container {
    width: 100%;
    height: 500px;
}

.search-box {
    position: absolute;
    z-index: 5;
    width: 100%;
    left: 13%;
    top: 10px;
    height: 30px;
    border: none !important;
}

.tip-box {
    width: 73%;
    max-height: 260px;
    position: absolute;
    top: 42px;
    overflow-y: auto;
    background-color: #fff;
}
</style>

里面都有对应的注释文章来源地址https://www.toymoban.com/news/detail-469455.html

到了这里,关于vue项目中使用高德地图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue项目接入高德地图点击地图获取经纬度及省市区

    准备工作,可以先看官方的介绍,JSAPI结合Vue使用,这个不需要在main.js中引入 index.html中 index.vue的html部分 index.vue的script部分 index.vue的css部分 页面效果 逆解析经纬度得到的详细地址

    2024年02月16日
    浏览(53)
  • vue中引入并使用高德地图

    1.进入高德开放平台 2.点击: 开发支持---------地图JS AP---------JSAPI的加载 3.选择 按NPM方式使用loader 4.定义一个有宽高的div,书写以下代码: 先放效果图,左下角是可供选择的鼠标样式 1.点击示例中心---------地图属性-------下划找到 设置鼠标样式 2.点进去后有示例代码 3.这是之前

    2024年02月03日
    浏览(56)
  • Vue3使用高德地图、搜索、地图选点、以及省市区三级联动

    1、准备工作 需要在 高德开发平台 申请自己的 key 和 密钥 这里的 Key 名称大家可以随意填写 申请完之后我们得到 key 和 密钥 vue中使用需要安装**@amap/amap-jsapi-loader --save** 官方文档 2、代码实现 首先我们需要三个文件,一个 index.vue 一个用来存放省市区的 index.js 文件 一个 ma

    2024年02月05日
    浏览(75)
  • 前端系列——vue2+高德地图web端开发(使用和引入)

    本人非专业前端开发,其实是搞后端的,但是正好接了一个项目需要我负责全栈,所以写了这个系列的文章,如果以后项目可以开源我会放出来的 本次我们要实现的是vue2+高德地图的网页开发 本文需要大家系统学过vue以及初步了解高德地图的情况下理解起来会十分省力 高德

    2024年01月16日
    浏览(48)
  • vue3使用高德地图实现点击获取经纬度以及搜索功能

     话不多说直接上干活 在此之前你需要有高德地图的 key,这个自己去申请即可 1,首先需要在终端安装 2,准备一个容器 3,在需要使用的页面引入刚才安装的 4, 5,绑定input框 最后附上css代码 ​​​​​​​这个时候就已经可以了

    2024年02月12日
    浏览(45)
  • vue对高德地图的简单使用:点击标记并获取经纬度和详细地址

    目录 第一步:先按部就班,进入高德开放平台,跟着步骤注册账号,创建应用 第二步:用npm下载包,初始化地图 第三步:实现点击地图添加标记 第四步:点击获取详细地址 第五步:搜索获取相关地区提示 第六步:全部代码(把密钥和key替换可直接运行)   高德地图有AP

    2024年02月06日
    浏览(59)
  • vue 使用高德地图实现自定义选取起点和终点功能,支持搜索地址跳转定位(保姆级教程)

    1. 起点终点选择  2. 地址搜索   1. 获取高德地图key 1.1  访问高德地图官网注册完成后登录,进入控制台  1.2  左侧 应用管理-我的应用,点击创建新应用 1.3 点击添加   1.4 选择 Web端(JS API)  1.5 创建完成,得到key和安全密钥   2. 引入高德地图npm包 提示:以下代码全部在*.vu

    2024年02月04日
    浏览(53)
  • VUE3+Ts使用高德地图组件@vuemap/vue-amap语法检测Amap is not defind

    踩坑记录:最近项目中用到了@vuemap/vue-amap高德地图组件,正常配置完成后,引入官方示例,地图正常出现,可以正常编译不出错,但是代码提示给我整了个这。 于是,开始查资料,为什么会出现这个情况,然后是因为在main.js导入的名字VueMap和高德自己全局暴露AMap不是一码事

    2024年02月06日
    浏览(56)
  • Vue 引入高德地图:实现地图展示与交互

    本文将介绍如何在Vue项目中引入高德地图,以及如何实现地图的展示和交互功能。我们将从安装依赖开始,然后配置高德地图的密钥和相关插件,最后演示如何在Vue组件中使用地图组件和实现基本的交互功能。通过本文的指导,您将能够轻松地在Vue项目中集成高德地图,实现

    2024年02月08日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包