一、基本介绍
Web API是一种提供给程序员的接口,该接口可以让开发者使用Web技术在互联网或局域网中,与其他程序进行交互。高德地图(AMap)Web API,提供了一系列Web地图应用开发接口,该API可以将各类基础地图、卫星地图、交通态势图、违章查询等实用信息数据,包括POI数据(例如餐厅、加油站、公交站等)和步行路线规划在内的功能,嵌入到开发者的网页中,提供基于Web交互的地图应用功能。
AMap通过向后端发送HTTP请求,通过API接口获取对应的数据,是一种非常灵活和易于使用的方式,是开发者构建在线地图及应用程序所必需的。
二、地图展示
首先,在使用AMap API之前,需要从高德地图开放平台获取一个API Key,API Key是访问高德地图API的唯一标识,开发者可以根据需求自己申请。
下面是一个简单的示例,用于在地图上绘制一个标记,该标记的地址为北京市朝阳区朝外大街,示例代码如下:
var map = new AMap.Map('container', {
resizeEnable: true,
center: [116.39,39.9],
zoom: 13
});
var marker = new AMap.Marker({
icon: "https://webapi.amap.com/theme/v1.3/markers/n/mark_b.png",
position: [116.399,39.9]
});
marker.setMap(map);
三、POI搜索
AMap提供了POI搜索的功能,可以让开发者在地图上搜索指定关键字,例如:餐厅、加油站、公交站等。地图将会返回多个包含指定关键字的POI信息,通过这些信息,可以帮助您构建高大上的web应用程序。
下面是一个简单的示例,用于搜索北京市朝阳区朝外大街的餐厅和医院,并在地图上标记出来,示例代码如下:
var map = new AMap.Map('container', {
resizeEnable: true,
center: [116.39,39.9],
zoom: 13
});
var placeSearch = new AMap.PlaceSearch({
map: map
});
//搜索餐厅
placeSearch.searchNearBy("餐厅", [116.39,39.9], 2000, function(status, result) {
if (status == 'complete' && result.info == 'OK') {
for (var i = 0; i < result.poiList.pois.length; i++) {
var marker = new AMap.Marker({
icon: "https://webapi.amap.com/theme/v1.3/markers/n/mark_b.png",
position: result.poiList.pois[i].location
});
marker.setMap(map);
}
}
});
//搜索医院
placeSearch.searchNearBy("医院", [116.39,39.9], 2000, function(status, result) {
if (status == 'complete' && result.info == 'OK') {
for (var i = 0; i < result.poiList.pois.length; i++) {
var marker = new AMap.Marker({
icon: "https://webapi.amap.com/theme/v1.3/markers/n/mark_b.png",
position: result.poiList.pois[i].location
});
marker.setMap(map);
}
}
});
四、路线规划
AMap还提供了路线规划的功能,可以让开发者在地图上规划步行、公交、驾车等多种类型的路线,可以用于构建出行类应用程序。
下面是一个简单的示例,用于规划从北京市朝阳区朝外大街到北京市海淀区中关村大街的步行路线,并在地图上标记出来,示例代码如下:
var map = new AMap.Map('container', {
resizeEnable: true,
center: [116.39,39.9],
zoom: 13
});
var walking = new AMap.Walking({
map: map
});
walking.search([116.399,39.9], [116.329,39.996], function(status, result) {
if (status == 'complete') {
var path = result.routes[0].path;
var polyline = new AMap.Polyline({
path: path,
strokeColor: "#00A", //线颜色
strokeWeight: 6, //线宽
strokeOpacity: 0.7 //线透明度
});
polyline.setMap(map);
}
});
五、交通态势
AMap还提供了交通态势的功能,可以帮助开发者获取实时交通信息,例如路况、拥堵程度、交通事故等信息。可以用于构建交通出行类应用程序。
接下来的示例演示如何显示某个城市的交通状况,示例代码如下:
var map = new AMap.Map('container', {
resizeEnable: true,
center: [116.39,39.9],
zoom: 11
});
var trafficLayer = new AMap.TileLayer.Traffic({
zIndex: 10
});
trafficLayer.setMap(map);
六、地理围栏
AMap还提供了地理围栏的功能,可以让开发者在地图上创建或撤销地理围栏,这些围栏可以用于检测指定区域内或外部的行为。
下面的示例演示如何创建一条矩形的地理围栏,示例代码如下:
var map = new AMap.Map('container', {
resizeEnable: true,
center: [116.39,39.9],
zoom: 13
});
var bounds = new AMap.Bounds([116.39,39.90],[116.41,39.92]);
var rectangle = new AMap.Rectangle({
bounds: bounds,
strokeColor: "#F33", //线颜色
strokeOpacity: 0.5,//线透明度
strokeWeight: 3, //线宽
fillColor: "#ee2200",//填充色
fillOpacity: 0.35//填充透明度
});
rectangle.setMap(map);
七、地图事件
AMap还提供了地图事件的功能,可以让开发者在地图上绑定各种事件,例如点击事件、移动事件、缩放事件等。开发者可以在每个事件中添加自己的逻辑,以满足应用程序的需求。
下面的示例演示如何在地图上创建一个缩放条,并且在地图缩放结束后,显示当前的缩放级别,示例代码如下:
var map = new AMap.Map('container', {
resizeEnable: true,
center: [116.39,39.9],
zoom: 13
});
AMap.plugin(['AMap.Scale'],function(){
var scale = new AMap.Scale();
map.addControl(scale);
});
map.on('zoomend', function(){
document.getElementById('zoom').innerHTML = "当前缩放级别:"+map.getZoom();
});
八、总结
以上仅是AMap的一些基本功能介绍,更多细节和高级API可参阅高德官方文档,AMap非常完善,其使用和开发难度都很低,并且提供了不少优秀的代码示例,因此对于地图开发感兴趣的开发者来说,采用AMap开发Web应用是一个不错的选择。