• 高德地图和canvas画图结合应用(一)


    现在重构web项目的时候发现,以前项目中是高德画基站的扇区的时候,通过计算点来画多边形,在站点的数量比较多的时候,会增加请求,同时计算扇区的时候有大量的计算,这样会极度浪费服务器的性能,所以对这块进行了改良,直接使用的高德地图的canvas层在画基站,效果如下图所示:

     

    其代码为:

    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="utf-8">
            <meta http-equiv="X-UA-Compatible" content="IE=edge">
            <title>ImageLayer</title>
            <meta id="viewport" name="viewport" content="width=device-width,user-scalable=no,initial-scale=1.0,maximum-scale=1.0"/>
            <link rel="stylesheet" href="http://cache.amap.com/lbs/static/main1119.css"/>
    <script src="http://webapi.amap.com/maps?v=1.4.2&key=您申请的key值"></script> -->
        </head>
            
        <body>
            <div id="container"></div>
            
            <script>
                var map = new AMap.Map('container', {
                    resizeEnable: true,
                    // viewMode:"3D",
                    zoom:15,
                    center:[116.335183,39.941735]
                });
    
                /*
                 * 添加Canvas图层
                 */
                 var canvas = document.createElement('canvas');
                 canvas.width = map.getSize().width;
                 canvas.height = map.getSize().height;
                 var context = canvas.getContext('2d');
                 //context.strokeStyle='white';
                 //canvas.style.zIndex = AMap.Overlay.getZIndex(this._point.lat);
                 context.globalAlpha = 1;
                 context.lineWidth = 2;
                 var radious = 0;
                 var secNumber = 1;
                 var draw  = function(argument) {
                    context.clearRect(0,0,canvas.width,canvas.height)
                     context.globalAlpha = (context.globalAlpha-0.3+1)%1;
                     radious=50;
    
                    var pixel = map.lnglatTocontainer(new AMap.LngLat(116.344496,39.939976));
                    var startPoint=0;
                    for(var i=0;i<3;i++){
                        context.fillStyle = 'rgb(0,100,255)';
                        context.strokeStyle = 'rgb(0,100,255)';
                        context.beginPath();
                        //定义起点
                        context.moveTo(pixel.getX(),pixel.getY());
                        context.arc(pixel.getX(),pixel.getY(),50,startPoint,startPoint+Math.PI/3,false);
                        context.fill();
                        startPoint+=Math.PI*2/3;
                    }
                 }
                 
                 var CanvasLayer = new AMap.CanvasLayer({
                    canvas: canvas,
                    bounds: map.getBounds( ),
                    zooms: [3, 18],
                });
    
                CanvasLayer.setMap(map);
                draw();
            
            
            </script>
        </body>
    </html>
    View Code
  • 相关阅读:
    Java中List和ArrayList的区别(转)
    Java的JDBC事务详解(转)
    Java JDBC批处理插入数据操作(转)
    celery入门
    Python装饰器与面向切面编程
    python 中类方法@classmethod
    Virtualenv: 一个Python环境管理工具(windown版本)
    python操作excel之 模块 xlrd
    django多条件筛选搜索(项目实例)
    jQuery选择器总结
  • 原文地址:https://www.cnblogs.com/blogofwu/p/8610821.html
Copyright © 2020-2023  润新知