高德地图开发-常用api踩坑使用

vue项目中调用高德地图vue-amap 插件 的AMap.PlaceSearch简用 vue项目调用高德地图vue-amap 插件 的AMap.PlaceSearch简用 结合 elementui 的 el-input 直接下拉选取地点 不展示地图 1.下载 npm install vue-amap --save 2.直接在mian.js import AMap from 'vue-amap'; Vue.use(AMap); // 初始化vue-amap AMap.initAMapApiLoader({ // 高德key key: '自己的高德key', 阅读详情

一、高德地图的加载初始化

在这就踩过很多坑,新建项目正常显示没问题,放到我们的项目就是不显示,加载不出来,
这个时候不要慌,只要确保下面三部完成就莫问题了

1.引入高德地图开发者api

<script type="text/javascript" src="http://webapi.amap.com/maps?v=1.3&key=4611f58483d79aa58bf6d2b508078f9c&plugin=AMap.Autocomplete,AMap.PlaceSearch"></script>

生成key的方式自行百度,一大堆,下面是我的
在这里插入图片描述
我开发的时候在这就踩坑了,因为新接触的项目,不是很了解,系统前端是页面套页面的方式,所以我应该在公共页面main_null.html中引入api,而不是当前html
2.页面上给一个放地图的容器

<!--高德地图容器-->
            <div style="width: 500px; height: 400px;" id="dituContent"></div>

3.js里创建地图、初始化,放到页面地图容器中

map = new AMap.Map('dituContent',{
                resizeEnabel: false,//是否监控地图容器尺寸变化
                zoom: 10,//初始化地图层级
                center: [116.397428, 39.90923]//设置地图中心点
            });

创建地图语句固定,第一个参数为地图容器的id,第二个参数是初始化地图的属性,
这样地图就可以加载出来啦:
在这里插入图片描述

二、给地图添加标注

地图上的这个小蓝点是怎么来的呢,

//1.定义标注的图标
var markerContentBlue = '' +
        '<div>' +
        '   <img  style ="width:25px;height:34px;" src="/common/main/images/mapblue.png">' +
        '</div>';
  //2.创建标注
marker1[0] = new AMap.Marker({
         position:new AMap.LngLat(116.39, 39.9),//标注显示的位置
         content: markerContentBlue,//上面定义的图标
         offset: new AMap.Pixel(-13, -14)//移动距离:绝对坐标、相对坐标
     });
     //3.将标注添加到地图上
     map.add(marker1[0]);

三、地图点击事件

我们开发当然是要实现点击地图,获取点击位置的经纬度,详细地址信息进行保存、业务处理
注释已经写很清楚啦

map.on('click', function (e) {
            //1.清楚地图标注
            map.remove(marker1[0]);
            //2.经纬度赋值
            $("#lng").val(e.lnglat.getLng());
            $("#lat").val(e.lnglat.getLat());
            //3.根据经纬度反向地理编码获取地图定位赋值
            var geocoder;
            var lnglatXY = new AMap.LngLat(e.lnglat.getLng(), e.lnglat.getLat());
            //加载地理编码插件
            map.plugin(["AMap.Geocoder"], function () {
                geocoder = new AMap.Geocoder({
                    radius: 1000, //以已知坐标为中心点,radius为半径,返回范围内兴趣点和道路信息
                    extensions: "all"//返回地址描述以及附近兴趣点和道路信息,默认"base"
                });
                //返回地理编码结果
                AMap.event.addListener(geocoder, "complete", function (e) {
                    console.log(e.regeocode);
                    $("#suggestId").val(e.regeocode.formattedAddress);
                });
                //逆地理编码
                geocoder.getAddress(lnglatXY);
            });
            //4.添加标注
            marker1[0] = new AMap.Marker({
                position: new AMap.LngLat(e.lnglat.getLng(), e.lnglat.getLat()),
                offset: new AMap.Pixel(-13, -14),
                content: markerContentBlue,
                title: '北京'
            });
            map.add(marker1[0]);
        })

四、通过输入框去定位地图

当然还有很重要的一个功能就是 智能搜索,我们在输入框里输入位置,地图自动定位到当前范围

//根据输入框标注地图
    var auto = new AMap.Autocomplete({
        input:"suggestId",
        city:""
    });
    var placeSearch = new AMap.PlaceSearch({
        city: '',
    });
    //构造地点查询类
    AMap.event.addListener(auto, "select", select);//注册监听,当选中某条记录时会触发
    function select(e) {
        console.log(e.poi)
        map.remove(marker1[0]);
        placeSearch.search(e.poi.name);  //关键字查询查询
        map.setZoomAndCenter(15, [e.poi.location.lng, e.poi.location.lat]); //同时设置地图层级与中心点
    }

贴出全部代码:

<!doctype html>
<html>
<head>
    <title>关键字查询自我展示</title>
    <script type="text/javascript" src="http://webapi.amap.com/maps?v=1.3&key=4611f58483d79aa58bf6d2b508078f9c&plugin=AMap.Autocomplete,AMap.PlaceSearch"></script>
    <script type="text/javascript" src="https://cache.amap.com/lbs/static/PlaceSearchRender.js"></script>
    <script type="text/javascript" src="https://cache.amap.com/lbs/static/addToolbar.js"></script>
    <style>
        input{
            width:20px;
            height:30px;
            border-radius:18px;
            border:2px solid gray;
        }
    </style>
</head>
<body>
<div style = "  width:1000px;height:1000px;">
    <div>
        <div style="width: 500px; height: 400px;">
            <div id="r-result">
                <i></i>
                <input style="width: 500px; height: 30px;" id="suggestId" name="orientationAddress" type="text"   placeholder="请输入地图定位">
            </div>
            <div style="margin-top:2px;">
                <input  id="lng" name="longitude" type="text"  style="width: 150px;" placeholder="请输入经度">
                <input id="lat" name="latitude" type="text"  style="width: 150px;" placeholder="请输入纬度">
            </div>
            <div id="searchResultPanel" style="border: 1px solid #C0C0C0; width: 150px; height: auto; display: none;"></div>
            </br>
            <!--高德地图容器-->
            <div style="width: 500px; height: 400px;" id="dituContent"></div>
        </div>
    </div>
</div>
<script type="text/javascript">
    var lng;//经度
    var lat;//维度
    var marker1 = [];
    var map;
    var markerContentBlue = '' +
        '<div>' +
        '   <img  style ="width:25px;height:34px;" src="/common/main/images/mapblue.png">' +
        '</div>';
    $(document).ready(function(){
        if(lng == null || lat == null){
            map = new AMap.Map('dituContent',{
                resizeEnabel: false,
                zoom: 10,
                center: [116.397428, 39.90923]
            });
            marker1[0] = new AMap.Marker({
                position:new AMap.LngLat(116.39, 39.9),
                content: markerContentBlue,
                offset: new AMap.Pixel(-13, -14)//移动距离:绝对坐标、相对坐标
            });
            map.add(marker1[0]);
        }else{
            map = new AMap.Map('dituContent',{
                resizeEnable: false,
                zoom: 10,
                center: [lng1,lat1]
            });
            marker1[0] = new AMap.Marker({
                position:new AMap.lngLat(lng1,lat1),
                offset: new AMap.Pixel(-13,-14),
                content: markerContentBlue
            });
            map.add(marker1[0]);
        }
        map.on('click', function (e) {
            //1.清楚地图标注
            map.remove(marker1[0]);
            //2.经纬度赋值
            $("#lng").val(e.lnglat.getLng());
            $("#lat").val(e.lnglat.getLat());
            //3.根据经纬度反向地理编码获取地图定位赋值
            var geocoder;
            var lnglatXY = new AMap.LngLat(e.lnglat.getLng(), e.lnglat.getLat());
            //加载地理编码插件
            map.plugin(["AMap.Geocoder"], function () {
                geocoder = new AMap.Geocoder({
                    radius: 1000, //以已知坐标为中心点,radius为半径,返回范围内兴趣点和道路信息
                    extensions: "all"//返回地址描述以及附近兴趣点和道路信息,默认"base"
                });
                //返回地理编码结果
                AMap.event.addListener(geocoder, "complete", function (e) {
                    console.log(e.regeocode);
                    $("#suggestId").val(e.regeocode.formattedAddress);
                });
                //逆地理编码
                geocoder.getAddress(lnglatXY);
            });
            //4.添加标注
            marker1[0] = new AMap.Marker({
                position: new AMap.LngLat(e.lnglat.getLng(), e.lnglat.getLat()),
                offset: new AMap.Pixel(-13, -14),
                content: markerContentBlue,
                title: '北京'
            });
            map.add(marker1[0]);
        })
        //根据输入框标注地图
        var auto = new AMap.Autocomplete({
            input:"suggestId",
            city:""
        });
        var placeSearch = new AMap.PlaceSearch({
            city: '',
        });
        //构造地点查询类
        AMap.event.addListener(auto, "select", select);//注册监听,当选中某条记录时会触发
        function select(e) {
            console.log(e.poi)
            map.remove(marker1[0]);
            placeSearch.search(e.poi.name);  //关键字查询查询
            map.setZoomAndCenter(15, [e.poi.location.lng, e.poi.location.lat]); //同时设置地图层级与中心点
        }
    })
</script>
</body>
</html>

效果:
在这里插入图片描述

高德提供了很多开发实例可以参考:

https://lbs.amap.com/api/javascript-api/example/map-lifecycle/map-show

记录我踩过得坑:
智能搜索:高德提供的实例是:

<script type="text/javascript">
    //地图加载
    var map = new AMap.Map("container", {
        resizeEnable: true
    });
    //输入提示
    var autoOptions = {
        input: "tipinput"
    };
    var auto = new AMap.Autocomplete(autoOptions);
    var placeSearch = new AMap.PlaceSearch({
        map: map
    });  //构造地点查询类
    AMap.event.addListener(auto, "select", select);//注册监听,当选中某条记录时会触发
    function select(e) {
        placeSearch.setCity(e.poi.adcode);
        placeSearch.search(e.poi.name);  //关键字查询查询
    }
</script>

效果是:
在这里插入图片描述
他是把北京大学这一片的关键位置都给标上了,然后我要实现点击每个点拿到当前位置,可是费了好大劲,虽然后来有个前端大神也给搞定了,但是也很难做到再点击另一个标注时把其它标注都换为蓝点,就是标注的事件就很难拿到,
后来发现只要把实例中var placeSearch = new AMap.PlaceSearch({ map: map }); //构造地点查询类智能搜索类的属性换为city就好了,var placeSearch = new AMap.PlaceSearch({ city: '', }); //构造地点查询类就不会有那些点了,可以通过点击事件去添加、删除标注了,也符合常用体验
不了解的话还真是一点小东西就能折腾好久

高德marker的鼠标滑过滑出事件和label设置(mouseover mouseout) @[TOC](高德marker的鼠标滑过滑出事件和label设置(mouseover mouseout)) 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Mar... 阅读详情

相关推荐

android开发之高德地图API篇:1、高德地图API之实时定位+轨迹可视化

TIME:2020年7月6日 高德地图API之实时定位+轨迹可视化前言:step1、工程的配置step2、显示地图step2、实现静态定位:step3、实时定位step4、实现轨迹可视化:BUG:附上源码demo: 前言: 再开始干货之前呢,我想先谈一谈自己对与高德地图API开发的一些心得体会。 首先,我们在确定了现目要使用高德API后,我们要从哪里入手开发呢? 1、首先要去官网上查阅文档,这一点很重要,你想要实现的功能官网的document中都会有介绍,但是呢,他只是简单的为你介绍一些回调函数,帮你梳理开

千寻瀑 8672

高德地图Amap开发实践

一、简介: 高德开放平台是国内技术领先的LBS(Location Based Services,基于位置的服务)服务提供商,拥有先进的数据融合技术和海量的数据处理能力。高德开放平台向广大开发者提供覆盖移动端和Web端的开发工具,开发者通过调用开发包或接口即可在应用或网页中实现地图显示、标注、位置检索等功能。使得LBS应用的开发过程更加容易。 高德地图JS API是一套JavaScript语言开发的地图应用编程接口,移动端、PC端一体化设计,一套API兼容众多系统平台。目前JS API免费开放使用。 J

hoaxxcj的博客 3953

高德地图api实现导航功能(使用经验)避坑关注

关于导航功能的实现实际上就是使用市面上开放的地图api,按照操作文档进行开发实现功能的。 业内流行的无非是两种,一种高德地图api,另一种是百度地图api,博主这里选用了高德地图api,进行避坑讲解。只要会其中一种api,另一种也不攻自破了。 当然这篇文章也是用来记录,我在真实开发环境中,遇到的任务。 这里结合我的任务需求,来讲解api的使用。 1.任务描述及思路分析 任务描述:在原有的周边资源的marker标记点上,实现点击标记点,导航到固定的一个终点。 思路分析:这里通过看高德api大概的功

weixin_56044831的博客 1万+

高德地图记录遇到的问题

高德地图

weixin_53196143的博客 1391

高德地图api接口免费查询天气

高德地图api接口免费查询天气

xuehu999727的博客 7140

高德地图 web api 使用

1. 高德地图开发者官网新建开发账号 https://lbs.amap.com 2.在项目index.html中引入对应key值的web api 3.在相应的页面添加map元素,并初始化一个map对象 <div class="mapContainer" id="myMap"></div> _this.mapObj = new AMap.Map(...

yorcentroll的博客 3671

Vue3 集成高德地图 API 开发实践

本文详细介绍了在Vue3项目中集成高德地图API的全流程解决方案。首先概述了Vue3的CompositionAPI、响应式系统等核心特性与高德地图的基础功能;然后讲解了从开发者密钥申请到SDK引入的具体配置方法;接着通过代码示例展示了地图初始化、标记点添加、路径规划等常用功能的实现;最后探讨了性能优化、移动端适配及进阶实践案例。文章为开发者提供了从基础集成到复杂场景的完整技术指南,帮助快速构建高性能的地图应用。

m0_67078501的博客 2684

高德地图 web API 多点路线绘制

前两天出门旅游了,然后回来的时候,男朋友说想要绘制一个这几年自驾的路线,我一听,哎呀这不是很简单吗。 然后发现百度地图和高德地图最多好像只能添加5个中途点。不过5个中途点绘制不了这几天的自驾路线,因为都覆盖不了。 之前在做项目的时候用的是Google map API,但是现在因为在国内也用不了Google map。然后我就选择了用高德地图的API。 注意:高德地图的API最多可以添加16个中途点。 下面我就来一步一步和大家说,怎样绘制一份多个中途点的路线。 其实很简单,步骤只有三步,甚..

weixin_39874268的博客 1万+

【高德地图API】Web地图开发系列(一)

✍、官方文档写的非常详细,本篇只是对官方文档的再解读,可能会有部分认知不准确,主要是为了入门高德地图jsapi的使用。

Augenstern_QXL的博客 3万+

百度地图、高德地图API使用

为了防止您的API密钥被盗用,建议您配置refer白名单,只有在白名单中的域名才能使用该密钥调用API。首先,你需要在高德地图开放平台注册账号并创建一个应用,以获取API Key(也称为“Key”或“密钥”)。2.点击“创建应用”,填写应用名称,选择应用类型(通常选择“浏览器端”)。标签引入百度地图的JavaScript文件,并使用您的API密钥。1.登录百度地图开放平台,进入“应用管理” -> “我的应用”。3.提交后,您将获得一个唯一的API密钥(AK),表示只有您的域名下的网站才能使用该密钥。

weixin_45115367的博客 2005

微信小程序开发-高德地图api

第一步: 既然是高德地图的使用,那么我们首先进入高德地图开放平台:高德地图 注册之后在应用管理新建一个应用获取key 获取key之后我们去高德地图API看看高德对API的介绍, 相关下载那有sdk的下载链接,参考文档有相关的方法介绍。 第二步: 登录微信开发者平台,在设置里面获取appid,另外在服务器域名设置里面将https://restapi.ama

黑猫中校的燃烧战场 1万+

高德地图api的使用

众所周知,高德地图作为中国第一家拿到国际GPS卫星定位的厂商,权威性是毋庸置疑的。那么我们改怎么合理利用高德地图api来运用到我们的开发中去,下面我做了个测试,简单介绍一下高德地图api 的使用。第一:搜索高德地图api点击进入官网。点击右上角的注册按钮注册成为高德地图的开发者。选择个人开发。第二:登录高德地图,选择【应用管理】////点击【创建新应用】建立新的应用。点击创建新应用,选择一个你要的...

shaochong047的博客 1万+

‘AMap is undefined‘高德地图(3)vue-amap报错

高德地图使用时,代码并没有问题,但是有的时候会出现'Amap is undefined'之类的错误,这个错误是因为eslint在检验中,在当前页面找不到Amap这个方法。所以我们在校验时把这个字段去除不做校验就可以了。 步骤一:找到eslintrc.js这个文件 步骤二:找到globals这个选项,没有的话就大胆的加一个~ 这个就是全局忽略的内容。 步骤三:重启项目~ 完事儿~ ...

liuwenjie_的博客 3851

《零踩坑教程:基于 Trae 的高德地图 API 部署全流程解析》

传统项目对接地图 API 常面临配置繁琐、兼容性差、调试低效等问题,而 Trae 的出现为这些痛点提供了新的解决方案。其全局上下文理解能力可快速适配高德地图 API 的接口规范,智能调试功能能精准定位部署中的异常。本文将以实际项目为例,详细说明 Trae 项目部署与高德地图 API 连接的关键环节,包括安全密钥配置、跨文件接口调用、性能优化策略等,助力开发者实现从项目构建到地图服务集成的高效闭环!本文将带你零基础完成Trae的一次部署之旅!

月亮永悬不落,剑指巅峰 2209

高德地图API如何使用

通过以上步骤,您可以成功接入并使用高德地图API来为您的应用添加丰富的地图功能。

QQ_778132974的博客 4783

【PCL】SolidWorks 三维建模 STL, OBJ 采样生成 PCD 点云数据(附源码)

[PCL自学篇] 一.SolidWorks三维建模STL,OBJ采样生成PCD点云数据新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 这阵子做线结构光视觉检测(轨道)项目的过程中,发现之前的许多知识点在逐渐遗忘,常言好记性

idiot5lie的博客 1万+

高德地图的开发和常用 API 的使用

1.引入高德地图的API文件 <scripttype="text/javascript"src="https://webapi.amap.com/maps?v=1.4.15&key=您申请的key值"></script> 2.创建地图容器 在你想要展示地图的页面中,创建一个div容器,并制定id标识: <divid="container"/> 同时制定容器大小。 #container{width:300px;height:...

qq_36437172的博客 1729

图自编码器(GAE)与变分图自编码器(VGAE)

在学习图自编码器之前先了解一下自编码器与变分自编码器。

小鱼的小窝 1万+

高德地图API使用~Web开发~从创建到具体功能展示

如果你不想要这个原颜色,或者你做的大屏是其他颜色的,在高德地图API中打开控制台-找到自定义地图-你可以自己设计,也可找你的ui小姐姐给你设计,更甚至掏钱买他们现成的模板,选中点击分享,复制模板样式的id到代码中。在上面的for循环里面修改图片样式即可,也不一定非得用这一个图片,它遍历的每一项就是一个点嘛,所以你可以根据位置啊或者其他的来给他放不一样的图片。这个时候你会发现我们创建的图标,太大了,不符合我们的预期,所以我们接下来应该,修改图片大小----下面是具体代码,直接cv到我们刚刚的地图下面即可。

weixin_47194802的博客 1万+

手把手教你用芯驰X9HP驱动MAX96755/MAX96752点亮智能座舱仪表屏(附完整寄存器配置表)

本文详细介绍了如何使用芯驰X9HP驱动MAX96755/MAX96752实现智能座舱仪表屏的完整开发流程,包括硬件架构解析、关键寄存器配置、Linux BSP集成及调试技巧。通过实战指南和完整寄存器配置表,帮助开发者快速掌握驱动开发核心技术,提升智能座舱系统的显示性能与稳定性。

weixin_30879169的博客 524

抖音风控参数逆向实战:从bd-ticket-guard-client-data到x-tt-session-dtrait的完整攻防解析

本文深入解析抖音风控参数逆向实战,重点剖析bd-ticket-guard-client-data和x-tt-session-dtrait的生成机制与破解方法。通过抓包调试、ECDH密钥生成、RSA与AES双层加密等技术手段,揭示抖音风控系统的核心逻辑,并提供实用的对抗策略与维护建议,助力开发者突破抖音风控限制。

weixin_30335575的博客 674

高德地图JS API地图组成和常用名词

本文简要介绍了高德地图 JS API 的地图组成结构和常用名词,帮助开发者理解地图的基本构成和核心概念,为复杂功能实现及高阶开发提供理论基础。

weixin_45511682的博客 1304

CISP-PTE考前实操练习题

CISP-PTE考前学习练习题目,渗透测试功工程师

2301_79546223的博客 1996
上一篇: idea -server、TomcatLocalhost log、Tomcat Catalina log 乱码问题
下一篇: Python学习笔记1
FightingITPanda
博客等级 码龄10年 477粉丝 211原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值