导航兔:

Web地图开发 【高德地图API】 导航地址
Web地图开发【高德地图API】(一) https://qianmoer.blog.csdn.net/article/details/128425601
Web地图开发【高德地图API】(二) https://qianmoer.blog.csdn.net/article/details/128425657

1、图层

1.1、高德官方图层

1.1.1、标准图层

您可以按照如下方法声明和创建一个标准图层,然后给地图对象设置layers属性,将其添加到地图中。

var layer = new AMap.createDefaultLayer({zooms:[3,20],    //可见级别visible:true,    //是否可见opacity:1,       //透明度zIndex:0         //叠加层级
})
var map = new AMap.Map('container',{layers:[layer] //当只想显示标准图层时layers属性可缺省
});

如果在地图初始时您只需要标准图层,那么地图对象的layers属性可以缺省,我们将为您自动添加一个标准图层:

var map = new AMap.Map('container');
属性 类型 说明
zooms [Number,Number] 支持的缩放级别范围,默认范围 [2-30]
dataZooms [Number,Number] 数据支持的缩放级别范围,默认范围 [2-30]
opacity Number 透明度,默认 1
visiable Boolean 是否显示,默认 true
zIndex Number 图层叠加的顺序值,1 表示最底层。默认 zIndex:4

1.1.2、卫星与路网图层

卫星图层与路网图层通常一起使用,这两个图层的创建和使用方法和TileLayer类似,只需要修改类名为对应的类名即可。

var satellite = new AMap.TileLayer.Satellite();
var roadNet = new AMap.TileLayer.RoadNet();var map = new AMap.Map('container',{zoom:10,layers:[satellite,roadNet]
});

1.1.3、实时交通图层

实时交通图层用于展示当前时刻的道路交通状况,不同的颜色代表不同的拥堵程度

  • 暗红色代表极度拥堵,绿色代表通畅,灰色代表路况不明。
  • 作为一种特殊的TileLayer,使用方法同卫星、路网等官方图层一样。
  • 特殊之处在于可以通过autoRefreshinterval参数指定是否自动刷新和刷新周期。
var map = new AMap.Map('container',{zoom:10
})var traffic = new AMap.TileLayer.Traffic({'autoRefresh': true,     //是否自动刷新,默认为false'interval': 180,         //刷新间隔,默认180s
});map.add(traffic); //通过add方法添加图层
//map.remove(traffic) //需要时可以移除

1.1.4、楼快图层

  • 楼块图层专门用来展示矢量的建筑物层,与标准图层中的楼块要素的效果相同,所以使用时应先通过features属性隐藏地图的默认楼块
  • 二者区别在于,楼块图层显示的级别范围较标准图层中的楼块大,可以用来实现一些特殊的效果,3D 视图下还可以为楼块指定高度比例系数heightFactor
  • 与其他图层不同,楼块图层的有效级别范围为[ 17, 20 ]
var satellite = new AMap.TileLayer.Satellite();         // 默认图层
var buildings = new AMap.Buildings({'zooms':[16,18],'zIndex':10,'heightFactor':2,    //2倍于默认高度,3D下有效'wallColor': 'red'    //楼块侧面颜色
});//楼块图层    var map = new AMap.Map('container', {center: [116.397428, 39.90923],viewMode:'3D',pitch:60,rotation:-35,features:['bg','road','point'],//隐藏默认楼块mapStyle:'amap://styles/light',layers:[satellite,Buildings]zoom: 17
});
属性 类型 描述
wallColor String 楼块侧面颜色,支持 rgba、rgb、十六进制等
roofColor String 楼块顶面颜色,支持 rgba、rgb、十六进制等
heightFactor Number 楼块的高度系数因子,默认为 1,也就是正常高度

1.1.5、室内地图

  • 当地图处在合适的级别下,移动到有室内地图的地方就会自动显示室内地图。
  • 可以通过监听地图 indoor_create 事件来获取这个室内图层,取得控制权。
    ①默认室内图层
// 调用默认室内图层
var map = new AMap.Map('container',{showIndoorMap: true, //显示地图默认的室内地图图层
});
map.on('indoor_create',function(){map.indoorMap.showIndoorMap('B000A8VT15',4); // 显示指定 POI 室内信息
})

官方参考手册有很多成员函数:室内地图

②独立的室内图层
当然,也可以自己来创建室内图层,这时需要将地图的默认室内图层隐藏,如:

1.2、简易行政区图

  1. 世界简易行政区图层AMap.DistrictLayer.World
  2. 国家简易行政区图层 AMap.DistrictLayer.Country
  3. 省市简易行政区图层 AMap.DistrictLayer.Province
    这些图层各自的使用场景为:
名称 适用范围
AMap.DistrictLayer.World 世界全部国家和地区的区域面和边界一并展示,可分别配置各国区域面的颜色,统一配置国界线、海岸线的颜色
AMap.DistrictLayer.Country 单独展示某个国家或地区的所有省级行政区域,可配置国界颜色、分别配置各省区域的面填充色和边界颜色;中国支持全部地级市一级的展示,可配置国界颜色、省界线、市界限颜色和省、市区域的面填充色
AMap.DistrictLayer.Province 单独展示一个或者组合展示多个中国行政区的区域,支持展示省级、市级、县级。可配置各省、市、县的边界颜色和面填充色

在使用这组图层之前首先需要引入AMap.DistrictLayer插件,

1.2.1、世界简易行政区图层

2、地图和覆盖物事件

除了地图展示外,当我们在地图上进行操作时,少不了要对各种交互事件进行处理。

2.1、事件绑定和解绑

  • 和大多数类库使用方式相同,直接使用 Map、覆盖物对象的 onoff 方法
var map = new AMap.Map("container");
var clickHandler = function(e) {console.log(e);alert('您在[ '+e.lnglat.getLng()+','+e.lnglat.getLat()+' ]的位置点击了地图!');// alert('您在[ '+e.lnglat.lng+','+e.lnglat.lat+' ]的位置点击了地图!');// 触发事件的对象console.log(e.target);// 触发事件的地理坐标console.log(e.lnglat);// 触发事件的像素坐标console.log(e.pixel);// 触发事件类型console.log(e.type);
};// 绑定事件
map.on('click', clickHandler);
// 解绑事件
map.off('click', clickHandler);

通过打印事件对象 e 来查看事件都包含什么属性,官方参考手册:地图和覆盖物事件

3、几何计算

3.1、距离、长度、面积

空间数据计算的函数库 AMap.GeometryUtil

3.1.1、计算两点间的实际距离

当需要计算两个地理位置间的实际地面距离时,可以使用静态方法 AMap.GeometryUtil.distance,返回数据以米为单位

var p1 = [116.434027, 39.941037];
var p2 = [116.461665, 39.941564];
// 返回 p1 到 p2 间的地面距离,单位:米
var dis = AMap.GeometryUtil.distance(p1, p2);

3.1.2、点到线段的最短距离

当需要计算某一点到线段的最短地面距离时,可以使用静态方法 AMap.GeometryUtil.distanceToSegment,返回数据以米为单位

var p0 = [116.450378, 39.947585];
var p1 = [116.434027, 39.941037];
var p2 = [116.461665, 39.941564];
// 返回 p0 到线段 p1-p2 的最短地面距离,单位:米
var dis = AMap.GeometryUtil.distanceToSegment(p0, p1, p2);

3.1.3、计算点到路径的最短距离

当需要计算某一点到一段路径的最短地面距离时,可以使用静态方法 AMap.GeometryUtil.distanceToLine,返回数据以米为单位。该方法与上条的区别在于该方法支持多点组成的线段。

var p0 = [116.450378, 39.947585];
var p1 = [116.434027, 39.941037];
var p2 = [116.461665, 39.941564];
var p3 = [116.466171, 39.937977];
// 返回 p0 到线段 p1-p2-p3 的最短地面距离,单位:米
var dis = AMap.GeometryUtil.distanceToSegment(p0, [p1, p2, p3]);

3.1.4、计算路径的实际长度

当需要计算某段路径的实际长度时,可以使用静态方法 AMap.GeometryUtil.distanceOfLine,返回数据以米为单位

var p0 = [116.450378, 39.947585];
var p1 = [116.434027, 39.941037];
var p2 = [116.461665, 39.941564];
// 返回线段 p0-p1-p2 的实际长度,单位:米
var dis = AMap.GeometryUtil.distanceOfLine([p0, p1, p2]);

3.1.5、计算封闭区域的面积

当需要计算指定路径围成的闭合区域面积时,可以使用静态方法 AMap.GeometryUtil.ringArea,返回数据以平方米为单位。

var p0 = [116.450378, 39.947585];
var p1 = [116.434027, 39.941037];
var p2 = [116.461665, 39.941564];
// 返回点 p0-p1-p2 围成的闭合区域面积,单位:平方米
var area = AMap.GeometryUtil.ringArea([p0, p1, p2]);

还有很多其他方法,具体参考官方手册即可:官方色手册

4、服务

4.1、路线规划

路线规划方式有驾车、公交、步行、骑乘和货车等,以驾车规划为例

  1. 获取驾车路线规划数据

  2. 使用默认UI显示驾车路线详情

  3. 使用驾车规划拖拽插件编辑路线

  4. 其它路线规划 API

4.1.1、获取驾车路线规划数据

  1. 引入 AMap.Driving 插件

  2. 使用关键字获取驾车规划数据。

  3. 使用默认UI显示驾车路线规划

    • 使用AMap.Driving获取驾车路线规划发起搜索后,需要开发者根据返回的路线方案数据结构自行显示路线详情并结合·AMap.Polyline·绘制到地图上。
    • 同时高德JS API还提供了默认的UI帮助开发者节省时间、提升效率,自动在地图上显示结构化的路线详情。
<body><div id="container"></div><div id="panel"></div><script>var map = new AMap.Map('container', {zoom: 11, //级别center: [116.397428, 39.90923], //中心点坐标});AMap.plugin('AMap.Driving', function() {var driving = new AMap.Driving({// 驾车路线规划策略,AMap.DrivingPolicy.LEAST_TIME是最快捷模式policy: AMap.DrivingPolicy.LEAST_TIME,// map 指定将路线规划方案绘制到对应的AMap.Map对象上map: map,// panel 指定将结构化的路线详情数据显示的对应的DOM上,传入值需是DOM的IDpanel: 'panel'})var points = [{keyword: '北京市地震局(公交站)',city: '北京'}, {keyword: '亦庄文化园(地铁站)',city: '北京'}]// 搜索完成后,将自动绘制路线到地图上driving.search(points);})</script>
</body>

这么做其实只将路线画到了地图上,但是默认的 UI 没有显示,这是因为我们没有给装路线规划的盒子设置样式,这里官方demo有样式设置,并且还引入了几个 js 文件,我们需要默认UI 时直接复制即可。地点关键字+驾车路线规划

new AMap.Driving 的参数如下

属性 类型 描述
map Map AMap.Map 对象,展现结果的地图实例。当指定此参数后,搜索结果的标注、线路等均会自动添加到此地图上。
policy number 驾车路线规划策略
extensions string 默认值:base,返回基本地址信息。当取值为:all,返回DriveStep基本信息+DriveStep详细信息
panel string
showTraffic boolean 设置是否显示实时路况信息,默认设置为true。 显示绿色代表畅通,黄色代表轻微拥堵,红色代表比较拥堵,灰色表示无路况信息。

官方还提供了其他路线规划,例如货车、公交、步行、骑行等。

4.2、行政区查询

在开发地图产品的时候,经常会有获取某一行政区下所有下级行政区信息的需求。以获取中国所有省份信息为例,

  1. 引入插件 AMap.DistrictSearch
AMap.plugin('AMap.DistrictSearch', function () {var districtSearch = new AMap.DistrictSearch({// 关键字对应的行政区级别,country表示国家level: 'country',//  显示下级行政区级数,1表示返回下一级行政区subdistrict: 1})// 搜索所有省/直辖市信息districtSearch.search('中国', function(status, result) {// 查询成功时,result即为对应的行政区信息})
})
// 除了获取所有省份/直辖市信息外,您可以通过修改level和subdistrict并配合search传入对应keyword查询对应信息。

AMap.DistrictSearch 的参数如下

属性 类型 描述
level string 关键字对应的行政区级别或商圈,可选值: country:国家 province:省/直辖市 city:市 district:区/县 biz_area:商圈
showbiz boolean 是否显示商圈,默认值true 可选为true/false,为了能够精准的定位到街道,特别是在快递、物流、送餐等场景下,强烈建议将此设置为false
extensions string 是否返回行政区边界坐标点,默认值:base,不返回行政区边界坐标点,取值:all,返回完整行政区边界坐标点
subdistrict number 显示下级行政区级数(行政区级别包括:国家、省/直辖市、市、区/县4个级别),商圈为区/县下一 级,可选值:0、1、2、3,默认值:1 0:不返回下级行政区 1:返回下一级行政区 2:返回下两级行政区 3:返回下三级行政区

这里看官方示例DEMO即可,官方文档其实代码并不支持运行,在官方文档看了基本信息参数等去官方Demo看,其中引入的 css、js
文件我们可以不用管,只要注意看其中的 js 逻辑即可

项目 - Web地图开发【高德地图API】(二)相关推荐

  1. Android 手机地图开发-高德地图问题

    高德地图地址:http://code.autonavi.com 示例程序及SDK下载地址 如何获取AutoNavi MAP API密钥 AutoNavi提供的地图通过MapView对象进行显示.Map ...

  2. android高德地图自定义地图,(android地图开发) 高德地图自定义对话框

    截图效果: 布局文件: android:layout_width="fill_parent" android:layout_height="fill_parent&quo ...

  3. 高德离线地图开发 java_自定义地图-创建地图-开发指南-Android 地图SDK | 高德地图API...

    简介 自 Android 3D 地图 SDK v5.2.0起,高德地图支持使用可视化自定义地图模版改变底图颜色和样式,实现可视化的编辑和控制显示地图元素. 创建样式文件 创建地图样式 高德地图开放平台 ...

  4. 高德h5地图api接口_html5通过腾讯地图、高德地图、百度地图开发api接口获取坐标对应的周边信息...

    在通过 geolocation 获取到当前的 GPS 坐标后,需要通过"逆地理位置解析"才能得到街道对应的街道.建筑物.周边等相关信息. 下面我使用国内的三家主要的地图厂商(腾讯地 ...

  5. arcgis api for js入门开发系列十七在线地图(天地图、百度地图、高德地图)

    本篇主要讲述的是利用arcgis api加载互联网在线地图服务资源,简单封装一个底图切换控件js,在线地图包括:天地图.高德地图以及百度地图,效果图如下: 实现思路: 1.简单的底图切换控件map.L ...

  6. java 地图控件_控件交互-与地图交互-开发指南-Android 地图SDK | 高德地图API

    控件是指浮在地图图面上的一系列用于操作地图的组件,例如缩放按钮.指南针.定位按钮.比例尺等. UiSettings 类用于操控这些控件,以定制自己想要的视图效果.UiSettings 类对象的实例化需 ...

  7. 高德地图开发之地图配置及vue上初始化创建地图

     开门见山地说,现如今地图相关的开发业务在工作中越来越常见,目前市面上主流的地图开发还是以百度和高德为主,今天就来讲一下高德地图的配置和在vue上的初始化创建,帮助大家更好更快的了解高德地图开发相关的 ...

  8. web页面调起地图APP(高德地图、百度地图、腾讯地图)

    web页面调起地图APP(高德地图.百度地图.腾讯地图) 在没有安装APP的情况下可以用web端地图 以路线规划为例: 一.腾讯地图 web端 官方文档地址:https://lbs.qq.com/we ...

  9. 通过腾讯地图、高德地图、百度地图开发接口获取坐标对应的周边相关信息

    通过腾讯地图.高德地图.百度地图开发接口获取坐标对应的周边相关信息 更新: 以前出于好意暴露了个人的KEY,现已被烂用.为不影响您的业务,请使用我的KEY的朋友去申请自己的KEY,我的KEY将在不久后 ...

  10. Android项目打包,及高德地图服务配置

    前段时间,领导安排了一个Android端功能的任务,开发好了之后问领导打包怎么整,领导也是一脸懵逼,我一个后端开发之前也没实际操作过,于是就百度,由于之前Android开发离职了,打包需要的签名文件也 ...

最新文章

  1. usaco Dual Palindromes
  2. Watershed函数
  3. vmware提示com.vmware.sps.fault.QsConnectionException报错
  4. Python入门100题 | 第018题
  5. IntelliJ IDEA 2020.2.4款 神级超级牛逼插件推荐(自用,真的超级牛逼)
  6. 从零开始一步一步搭建Ubuntu Server服务器、修改数据源、安装Docker、配置镜像加速器、Compose部署Gitlab服务
  7. GitHub 中文文档正式发布了!激动人心的大好事!
  8. boost::graph模块演示 GGCL Vertex 接口
  9. 数据结构--树形结构
  10. Linux常用备份恢复工具
  11. 32f407tim4时钟源频率_慎重选择时钟发生器,别让这俩指标影响你的ADC 「图片」...
  12. js 俩组数据根据id合并
  13. go语言:一些环境变量
  14. 解决allwinner bootlogo.bmg 开机logo 修改 后变绿
  15. JavaWeb实现快递物流查询
  16. mysqldump: Got error: 1168 differently defined non-MyISAM LOCK TABLES
  17. python猴子偷桃问题_java猴子偷桃问题
  18. 怎么调节PDF文件的尺寸大小?
  19. VMware认证专家(VCP)详细介绍
  20. Dubbo-05 20190317

热门文章

  1. 【D1N910】一线大厂React实践宝典(二) React组件
  2. 生物信息学——基础篇:一至三代测序技术
  3. 数据中台:中台设计四步走
  4. NRF52832实现Mifare K1门禁卡模拟的探索
  5. 适用于B超和彩超用的采集卡
  6. 输入分子式,计算相对分子质量
  7. 分子偶极矩大小如何判断_分子极性大小比较方法?
  8. 英杰华、斯柯达、通用汽车、微星、万达地产、OYO等公司高管变动
  9. Matlab BPNet系统辨识
  10. 迭代器Iterator接口的作用及其使用