(可直接复制使用)vue2+高德地图poi搜索和高德组件,可以地图选点,经纬度,比例尺,卫星图,路网,路况等等

简介: (可直接复制使用)vue2+高德地图poi搜索和高德组件,可以地图选点,经纬度,比例尺,卫星图,路网,路况等等

效果图(踩了好多坑,跟着b站一个up主写的)

image.png

image.png

1.注册高德开发者平台的应用

注册个人开发者以后进入控制台(按下面顺序进行)

image.png

image.png

image.png

image.png



2.引入

(1)首先安装高德地图的依赖洒

npm i @amap/amap-jsapi-loader --save

(2)复制代码


<template>
    <div>
        <div class="mapSearch">
            <input placeholder="请输入你要查找的关键词" v-model="userInput" id="tishikuang"></input>
            <button type="primary" @click="biu">确定选址</button>
        </div>
        <div id="container">
        </div>
    </div>
</template>
<script>
    import AMapLoader from '@amap/amap-jsapi-loader'
    window._AMapSecurityConfig = {
        securityJsCode: '安全密钥'//在这里填写你的安全密钥
    }
    export default {
        data() {
            return {
                map: null,
                autoOptions: {
                    input: 'tishikuang' //绑定的搜索关键字的input标签ID,用这个注册
                },
                auto: null,
                userInput: '', //绑定的搜索关键字的的内容
                placeSearch: null,
                searchHere: null, //根据搜索组件搜索到以后的地点信息
            }
        },
        mounted() {
            this.initMap()
        },
        methods: {
           // poi搜索以后 点击确认选址以后的操作
            biu() {
                if (this.searchHere) {
                    this.$message({
                        message: '确认地点:'+this.searchHere.name,
                        type: 'success'
                    });
                    // this.$emit('mapHere',this.searchHere);
                    alert(`地址数据都在data里面this.searchHere,包括经纬度,以及其他各种地址信息,该有的都有,当poi搜索以后select(e){}方法里面的参数e就是地址信息,我把单独拿出来。地点名:`+this.searchHere.name)
                }
            },
            initMap() {
                AMapLoader.load({
                    key: "填写你的key值", // 申请好的Web端开发者Key,首次调用 load 时必填
                    version: "2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
                    plugins: ['AMap.ToolBar', 'AMap.Scale', 'AMap.HawkEye', 'AMap.MapType',
                        'AMap.Geolocation', 'AMap.AutoComplete', 'AMap.PlaceSearch', 'AMap.Geocoder'
                    ], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
                }).then((AMap) => {
                    this.map = new AMap.Map("container", { //设置地图容器id
                        viewMode: "3D", //是否为3D地图模式
                        zoom: 17, //初始化地图级别
                        center: [105.602725, 37.076636], //初始化地图中心点位置
                    });
                    //引入高德地图的空间绑定使用
                    this.map.addControl(new AMap.Scale())
                    this.map.addControl(new AMap.ToolBar())
                    this.map.addControl(new AMap.HawkEye())
                    this.map.addControl(new AMap.MapType())
                    this.map.addControl(new AMap.Geolocation())
                    this.auto = new AMap.AutoComplete(this.autoOptions)
                    //
                    this.placeSearch = new AMap.PlaceSearch({
                        map: this.map
                    }) //构造地点查询类
                    this.auto.on('select', this.select)//绑定查询事件
               }).catch(e => {
                    console.log(e);
                })
            },
            //poi搜索 这里面的这个参数 e 就是搜索以后的地址信息 你可以把它打印出来看一看经纬度什么的都有
            select(e) {
                this.placeSearch.setCity(e.poi.adcode) //依据城市ID搜索
                this.placeSearch.search(e.poi.name) //关键字查询查询
                this.map.setZoom(10,true)
                this.searchHere = e.poi
                this.$message({
                    message: '选择地点:' + this.searchHere.name,
                    type: 'success'
                });
            }
        },
    }
</script>
<style lang="less" scoped>
    #container {
        padding: 0px;
        margin: 0px;
        width: 100%;
        height: 500px;
    }
    .mapSearch {
        display: flex;
        margin-bottom: 8px;
        .el-button {
            margin-left: 8px;
        }
    }
    #tishikuang {
        margin-bottom: 200px;
        display: block;
    }
</style>

(3)在代码中填写你高德开发者的安全密钥和key值,已经在要填写的地方做了标注


看代码注释就可以找到


算了还是给你写上吧

image.png

image.png



!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


可以直接复制使用的能不能点个赞再走啊呜呜呜


还有最重要一点 我途中搜索组件的样式是基于element-ui为了防止有的人不会使用element-ui我把关于element-ui的删除了,自己调样式就行


如果你会element-ui那么真正的搜索组件样式是这样的

<template>
    <div>
        <div class="mapSearch">
            <el-input placeholder="请输入你要查找的关键词" v-model="userInput" id="tishikuang"></el-input>
            <el-button type="primary" @click="biu">确定选址</el-button>
        </div>
        <div id="container">
        </div>
    </div>
</template>



目录
相关文章
|
2月前
|
JavaScript
在 Vue 中处理组件选项与 Mixin 选项冲突的详细解决方案
【10月更文挑战第18天】通过以上的分析和探讨,相信你对在 Vue 中使用 Mixin 时遇到组件选项与 Mixin 选项冲突的解决方法有了更深入的理解。在实际开发中,要根据具体情况灵活选择合适的解决方案,以确保代码的质量和可维护性。
107 7
|
19天前
|
缓存 JavaScript UED
Vue3中v-model在处理自定义组件双向数据绑定时有哪些注意事项?
在使用`v-model`处理自定义组件双向数据绑定时,要仔细考虑各种因素,确保数据的准确传递和更新,同时提供良好的用户体验和代码可维护性。通过合理的设计和注意事项的遵循,能够更好地发挥`v-model`的优势,实现高效的双向数据绑定效果。
120 64
|
19天前
|
前端开发 JavaScript 测试技术
Vue3中v-model在处理自定义组件双向数据绑定时,如何避免循环引用?
Web 组件化是一种有效的开发方法,可以提高项目的质量、效率和可维护性。在实际项目中,要结合项目的具体情况,合理应用 Web 组件化的理念和技术,实现项目的成功实施和交付。通过不断地探索和实践,将 Web 组件化的优势充分发挥出来,为前端开发领域的发展做出贡献。
27 8
|
19天前
|
JavaScript
在 Vue 3 中,如何使用 v-model 来处理自定义组件的双向数据绑定?
需要注意的是,在实际开发中,根据具体的业务需求和组件设计,可能需要对上述步骤进行适当的调整和优化,以确保双向数据绑定的正确性和稳定性。同时,深入理解 Vue 3 的响应式机制和组件通信原理,将有助于更好地运用 `v-model` 实现自定义组件的双向数据绑定。
|
1月前
|
存储 JavaScript 开发者
Vue 组件间通信的最佳实践
本文总结了 Vue.js 中组件间通信的多种方法,包括 props、事件、Vuex 状态管理等,帮助开发者选择最适合项目需求的通信方式,提高开发效率和代码可维护性。
|
1月前
|
存储 JavaScript
Vue 组件间如何通信
Vue组件间通信是指在Vue应用中,不同组件之间传递数据和事件的方法。常用的方式有:props、自定义事件、$emit、$attrs、$refs、provide/inject、Vuex等。掌握这些方法可以实现父子组件、兄弟组件及跨级组件间的高效通信。
|
2月前
|
缓存 JavaScript UED
Vue 的动态组件与 keep-alive
【10月更文挑战第19天】总的来说,动态组件和 `keep-alive` 是 Vue.js 中非常实用的特性,它们为我们提供了更灵活和高效的组件管理方式,使我们能够更好地构建复杂的应用界面。深入理解和掌握它们,以便在实际开发中能够充分发挥它们的优势,提升我们的开发效率和应用性能。
47 18
|
1月前
|
缓存 JavaScript UED
Vue 中实现组件的懒加载
【10月更文挑战第23天】组件的懒加载是 Vue 应用中提高性能的重要手段之一。通过合理运用动态导入、路由配置等方式,可以实现组件的按需加载,减少资源浪费,提高应用的响应速度和用户体验。在实际应用中,需要根据具体情况选择合适的懒加载方式,并结合性能优化的其他措施,以打造更高效、更优质的 Vue 应用。
|
2月前
|
前端开发 UED
vue3知识点:Suspense组件
vue3知识点:Suspense组件
38 4
|
2月前
|
JavaScript 前端开发 测试技术
组件化开发:创建可重用的Vue组件
【10月更文挑战第21天】组件化开发:创建可重用的Vue组件
27 1