十四 百度地图进阶

百度地图入门

百度地图绘图

包括:

  • 绘制图标
  • 绘制线段
  • 绘制文本
  • 绘制弹窗
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <style type="text/css">
    body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}
    </style>
    <script type="text/javascript" src="https://api.map.baidu.com/api?type=webgl&v=1.0&ak=G1LFyjrNGIkns5OfpZnrCGAKxpycPLwb"></script>
    <title>地图展示</title>
</head>
<body>
    <div id="allmap"></div>
</body>
</html>
<script type="text/javascript">
    var map = new BMapGL.Map("allmap");    // 创建Map实例
  var point = new BMapGL.Point(116.404, 39.915);
    map.centerAndZoom(point, 12);
    // map.enableScrollWheelZoom(true);
    map.setMapStyleV2({     
    styleId: '556b6c846f130ec3ad0016f2eba410f6'
    });
    // var marker = new BMapGL.Marker(point);        // 创建标注   
    // map.addOverlay(marker);                     // 将标注添加到地图中
    var myIcon = new BMapGL.Icon("https://www.youbaobao.xyz/datav-res/datav/location.png", 
      new BMapGL.Size(60, 60), {
            anchor: new BMapGL.Size(30, 30),
            imageOffset: new BMapGL.Size(0, 0)
        }
    );
    // 创建标注对象并添加到地图  
    var marker = new BMapGL.Marker(point, { icon: myIcon });
    marker.addEventListener("click", function(){   
    var opts = {
        width: 250,     // 信息窗口宽度
        height: 100,    // 信息窗口高度
        title: "标题"  // 信息窗口标题
        }
        var infoWindow = new BMapGL.InfoWindow("内容", opts);  // 创建信息窗口对象
        map.openInfoWindow(infoWindow, point);        // 打开信息窗口
    });
    map.addOverlay(marker); 
    var polyline = new BMapGL.Polyline([
        new BMapGL.Point(116.399, 39.800),
        new BMapGL.Point(116.405, 39.810),
        new BMapGL.Point(116.425, 39.820)
    ], {
        strokeColor: "blue",
        strokeWeight: 2,
        strokeOpacity: 0.5
    });
    map.addOverlay(polyline);
    var content = "测试";
    var label = new BMapGL.Label(content, {       // 创建文本标注
        position: point,                          // 设置标注的地理位置
        offset: new BMapGL.Size(200, 20)           // 设置标注的偏移量
    });
    label.setStyle({                              // 设置label的样式
    width: '100px',
        height: '20px',
        padding: '20px',
        color: '#fff',
    fontSize: '20px',
    border: '2px solid #1E90FF',
        background: 'red',
        whiteSpace: 'wrap',
        overflow: 'hidden',
        lineHeight: '20px'
    });
    label.addEventListener('click', function(e) {
        alert(e.target.content);
    });
    map.addOverlay(label);                        // 将标注添加到地图中
</script>

百度地图动画

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <style type="text/css">
    body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}
    #allmap {position: relative;}
    #tools {position: absolute;left:0;top:0;z-index: 1000;}
    </style>
    <script type="text/javascript" src="https://api.map.baidu.com/api?type=webgl&v=1.0&ak=G1LFyjrNGIkns5OfpZnrCGAKxpycPLwb"></script>
    <title>地图展示</title>
</head>
<body>
    <div id="allmap"></div>
    <div id="tools">
        <button id="start">播放动画</button>
        <button id="end">停止播放</button>
    </div>
</body>
</html>
<script type="text/javascript">
  var bmap = new BMapGL.Map("allmap");                          // 创建Map实例
    bmap.centerAndZoom(new BMapGL.Point(116.414, 39.915), 20);    // 初始化地图,设置中心点坐标和地图级别
    bmap.enableScrollWheelZoom(true);                             // 开启鼠标滚轮缩放
    bmap.setTilt(20);                              // 设置地图初始倾斜角度
    var keyFrames = [
        {
            center: new BMapGL.Point(116.307092,40.054922),
            zoom:20,
            tilt: 50,
            heading: 0,
            percentage: 0
        },
        {
            center: new BMapGL.Point(116.307631,40.055391),
            zoom: 21,
            tilt: 70,
            heading: 0,
            percentage: 0.1
        },
        {
            center: new BMapGL.Point(116.306858,40.057887),
            zoom:21,
            tilt: 70,
            heading: 0,
            percentage: 0.25
        },
        {
            center: new BMapGL.Point(116.306858,40.057887),
            zoom:21,
            tilt: 70,
            heading: -90,
            percentage: 0.35
        },
        {
            center: new BMapGL.Point(116.307904,40.058118),
            zoom: 21,
            tilt: 70,
            heading: -90,
            percentage: 0.45
        },
        {
            center: new BMapGL.Point(116.307904,40.058118),
            zoom: 21,
            tilt: 70,
            heading: -180,
            percentage: 0.55
        },
        {
            center: new BMapGL.Point(116.308902,40.055954),
            zoom:21,
            tilt: 70,
            heading: -180,
            percentage: 0.75
        },
        {
            center: new BMapGL.Point(116.308902,40.055954),
            zoom:21,
            tilt: 70,
            heading: -270,
            percentage: 0.85
        },
        {
            center: new BMapGL.Point(116.307779,40.055754),
            zoom:21,
            tilt: 70,
            heading: -360,
            percentage: 0.95
        },
        {
            center: new BMapGL.Point(116.307092,40.054922),
            zoom:20,
            tilt: 50,
            heading: -360,
            percentage: 1
        },
    ];
    var opts = {
    duration: 10000,     // 设置每次迭代动画持续时间
    delay: 3000,         // 设置动画延迟开始时间
    interation: 'INFINITE'        // 设置动画迭代次数
    };
    var animation = new BMapGL.ViewAnimation(keyFrames, opts);        // 初始化动画实例
    animation.addEventListener('animationstart', function(e) {        // 监听动画开始事件
        console.log('start');
    });
    animation.addEventListener('animationiterations', function(e) {   // 监听动画迭代事件
        console.log('onanimationiterations');
    });
    animation.addEventListener('animationend', function(e) {        // 监听动画结束事件
        console.log('end');
    });
    animation.addEventListener('animationcancel', function(e) {       // 监听动画中途被终止事件
        console.log('cancel');
    });
    document.getElementById('start').addEventListener('click', function() {
        bmap.startViewAnimation(animation);         // 开始播放动画
    });
    document.getElementById('end').addEventListener('click', function() {
        bmap.cancelViewAnimation(animation);         // 强制停止动画
    });
</script>

百度地图轨迹动画

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <style type="text/css">
    body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}
    #allmap {position: relative;}
    #tools {position: absolute;left:0;top:0;z-index: 1000;}
    </style>
    <script type="text/javascript" src="https://api.map.baidu.com/api?type=webgl&v=1.0&ak=G1LFyjrNGIkns5OfpZnrCGAKxpycPLwb"></script>
    <script type="text/javascript" src="https://api.map.baidu.com/library/TrackAnimation/src/TrackAnimation_min.js"></script>
    <title>地图展示</title>
</head>
<body>
    <div id="allmap"></div>
    <div id="tools">
        <button id="start">播放动画</button>
        <button id="end">停止播放</button>
    </div>
</body>
</html>
<script type="text/javascript">
  var bmap = new BMapGL.Map("allmap");                          // 创建Map实例
    bmap.centerAndZoom(new BMapGL.Point(116.297611, 40.047363), 17);    // 初始化地图,设置中心点坐标和地图级别
    bmap.enableScrollWheelZoom(true);                             // 开启鼠标滚轮缩放
    var path = [{
    'lng': 116.297611,
    'lat': 40.047363
    }, {
        'lng': 116.302839,
        'lat': 40.048219
    }, {
        'lng': 116.308301,
        'lat': 40.050566
    }, {
        'lng': 116.305732,
        'lat': 40.054957
    }, {
        'lng': 116.304754,
        'lat': 40.057953
    }, {
        'lng': 116.306487,
        'lat': 40.058312
    }, {
        'lng': 116.307223,
        'lat': 40.056379
    }];
    var point = [];
    for (var i = 0; i < path.length; i++) {
        point.push(new BMapGL.Point(path[i].lng, path[i].lat));
    }
    var pl = new BMapGL.Polyline(point);
    var trackAni = new BMapGLLib.TrackAnimation(bmap, pl, {
    overallView: true, // 动画完成后自动调整视野到总览
    tilt: 30,          // 轨迹播放的角度,默认为55
    duration: 20000,   // 动画持续时长,默认为10000,单位ms
    delay: 3000        // 动画开始的延迟,默认0,单位ms
    });
    document.getElementById('start').addEventListener('click', function() {
        trackAni.start();
    });
    document.getElementById('end').addEventListener('click', function() {
        trackAni.cancel();         // 强制停止动画
    });
</script>

WebGL

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容