• 0
  • 0

高德地图web端开发总结

2019-07-17 2342 0 admin 所属分类:开发组件

这是官方文档 https://lbs.amap.com/api/javascript-api/guide/abc/prepare

首先我们需要注册为开发者申请相应的密钥,这边是web端的。

然后在页面端创建一个容器,装载地图插件。

<div id="container"></div>

引入JS组件

<script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.15&key=填入你申请的密钥"></script>

往容器中创建map地图,支持添加各种初始化参数

map = new AMap.Map('container', {
      zoom:17,//缩放级别 最高为18
      pitch:75, // 开启 3D视图模式下 地图俯仰角度,有效范围 0 度- 83 度
      viewMode:'3D',//使用3D视图
      center: [146.2452328205,29.6929091290],//中心点坐标
});

加入实时路况显示层

//实时路况图层
var trafficLayer = new AMap.TileLayer.Traffic({
  zIndex: 10
});
//添加图层到地图
map.add(trafficLayer);

同时引入工具条插件

AMap.plugin(['AMap.ToolBar', 'AMap.Scale', 'AMap.OverView', 'AMap.MapType', 'AMap.Geolocation', ], function() {
    // 在图面添加工具条控件,工具条控件集成了缩放、平移、定位等功能按钮在内的组合控件
    map.addControl(new AMap.ToolBar());
    // 在图面添加比例尺控件,展示地图在当前层级和纬度下的比例尺
    map.addControl(new AMap.Scale());
    // 在图面添加鹰眼控件,在地图右下角显示地图的缩略图
    map.addControl(new AMap.OverView({
        isOpen: true
    }));
    // 在图面添加类别切换控件,实现默认图层与卫星图、实施交通图层之间切换的控制
    map.addControl(new AMap.MapType());
    // 在图面添加定位控件,用来获取和展示用户主机所在的经纬度位置
    map.addControl(new AMap.Geolocation());
});

地图加载完毕执行额外逻辑

map.on('complete', function() {
    //更新覆盖物显示
    updateCover();
    setInterval(function() {
        updateCover();
    }, 5000);
    //执行其他额外逻辑
});

监听地图点击事件

map.on('click', function(ev) {
    console.log(ev);
    // 触发事件的对象
    var target = ev.target;
    // 触发事件的地理坐标,AMap.LngLat 类型
    var lnglat = ev.lnglat;
    // 触发事件的像素坐标,AMap.Pixel 类型
    var pixel = ev.pixel;
    // 触发事件类型
    var type = ev.type;
    console.log(target);
    console.log(lnglat);
    console.log(pixel);
    console.log(type);
});

销毁地图

// 销毁地图,并清空地图容器
map.destroy( );

传入经纬度,设置地图中心点

// 标准写法
var position = new AMap.LngLat(116, 39);
// 简写 var position = [116, 39]; 
map.setCenter(position);

动态设置地图风格,支持自定义

<div>
    <select name="style" lay-filter="style">
        <option value="">选择地图风格</option>
        <option value="normal">标准</option>
        <option value="macaron">马卡龙风格</option>
        <option value="graffiti">涂鸦风格</option>
        <option value="whitesmoke">远山黛</option>
        <option value="dark">幻影黑</option>
        <option value="fresh">草青色</option>
        <option value="darkblue">极夜蓝</option>
        <option value="blue">靛青蓝</option>
        <option value="light">月光银</option>
        <option value="grey">雅士灰</option>
    </select>
</div>
form.on('select(style)', function(data) {
    if (data.value != "") {
        map.setMapStyle('amap://styles/' + data.value);
    }
});

自定义地图请看 https://lbs.amap.com/api/javascript-api/guide/map/map-style

添加覆盖物

var marker = new AMap.Marker({
  position: new AMap.LngLat(res.data[i].lng,res.data[i].lat),
  offset: new AMap.Pixel(-10, -10),
  icon: '覆盖物图标 建议46*46以内', // 添加 Icon 图标 URL
  title: '鼠标滑动时显示的内容',
  其他额外参数,会一起合并到对象中 通过  e.target.B.xxx获取
});
map.add(marker);

删除覆盖物

map.remove(marker);

设置覆盖物属性

透明度属性 opcatiy   0-1

点击覆盖物事件回调

marker.on('click', function(e) {
    console.log(e);
    var content = ["<div><img src=\"你的头像\"> ", "<div style=\"padding:0px 0px 4px;\"><b>{0}(UID:{1})</b>".format(e.target.B.title, e.target.B.rid), "近期在线 : " + e.target.B.lasttime, "最近接单 : " + e.target.B.last_take_time, "待完成单 : " + e.target.B.take_orders + '个', "总接单数 : " + e.target.B.total_take_orders + '个', "</div></div>"];
    //显示信息窗体	
    var infoWindow = new AMap.InfoWindow({
        content: content.join("
"),
    });
    // console.log(map.getCenter());		
    infoWindow.open(map, e.lnglat);
});

使用注意

① 高德地图 Uncaught Invalid Object: Pixel(NaN, NaN)

显示坐标点时,对经纬度的值做判断后再通过高德api作标记操作。


返回顶部