zoukankan      html  css  js  c++  java
  • 模拟地图瓦片加载

    <! doctype>
    <html>

    <head>
        <style>
            * {
                margin: 0;
                padding: 0;
            }
            
            canvas {
                border: 1px solid black
            }
        </style>

    </head>

    <body>
        <canvas id="canvas" width="1000px" height="500px" style="position:absolute;left:0;top:0"></canvas>
        <script>
          //把经纬度转换成平面坐标
            function LatToPx(obj) {
                return {
                    x: ((obj.lng + 180) / 360) * 1000,
                    y: -((obj.lat - 90) / 180) * 500
                }
            }

            function toX(lng) {
                return ((lng + 180) / 360) * 1000
            }

            function toY(lat) {
                return ((lat + 90) / 180) * 500
            }
            var c = document.getElementById("canvas");
            var ctx = c.getContext("2d");
            ctx.beginPath();
            ctx.fillStyle = "red";

            //把横轴分为100份  纵轴分成50份
            var xArr = [];
            var stepx = 360 / 20
            var yArr = [];
            var stepY = 180 / 10
            for (var i = 0; i < 20; i++) {
                xArr.push(+(stepx * i - 180).toFixed(2))
                console.log("&&&&&&&&", toX(+(stepx * i - 180).toFixed(2)))
            }
            for (var i = 0; i < 10; i++) {
                yArr.push(+(stepY * i - 90).toFixed(2))
                console.log("******", toY(+(stepY * i - 90).toFixed(2)))
            }

            console.log(xArr, yArr)
            var img = new Image();
            img.src = 33 + ".png"
            var promise = []
            img.onload = function() {
                for (var i = 0; i < xArr.length; i++) {
                    for (var j = 0; j < yArr.length; j++) {
                        ctx.beginPath();
                        ctx.arc(toX(xArr[i]), toY(yArr[j]), 2, 0, 2 * Math.PI);
                        ctx.stroke();
                        promise.push(aa(i, toX(xArr[i]), toY(yArr[j])));

                        function aa(i, a, b) {
                            return function() {
                                var img = new Image();
                                console.log("@@@", a * 360 / 1000 - 180, b * 180 / 500 - 90)
                                var lng = a * 360 / 1000 - 180;
                                var lat = b * 180 / 500 - 90;
                                console.log("?lng=" + a + "&lat=" + b + "&level=" + 1)
                                img.src = "33.png"
                                img.onload = function() {
                                    ctx.beginPath();
                                    //ctx.drawImage(img,0,0,toX(stepx-180),toX(stepx-180),a,b,toX(stepx-180),toX(stepx-180));
                                    ctx.drawImage(img, a, b, toX(stepx - 180), toX(stepx - 180), a, b, toX(stepx - 180), toX(stepx -
                                        180));
                                    //ctx.arc(a,b,5,0,2*Math.PI);
                                    //ctx.stroke();
                                }
                            }
                        }
                    }
                }
            }
            ctx.stroke();
            var y = 0;
            window.timer = setInterval(function() {
                if (y == promise.length - 1) {
                    clearInterval(window.timer)
                }
                promise[y]()
                y++;
            }, 500)
        </script>



    </body>

    </html>
  • 相关阅读:
    java 集合排序
    java传值和传址
    Dom4j操作xml
    JAXP操作xml
    乐观锁和悲观锁【转】
    java IO【转】
    java 可变参数
    Eclipse调试Java的10个技巧【转】
    编译JDK源代码【转】
    Access restriction: The method typeNameToClass(String) from the type ObjectHandler is not accessible due to restriction on required library
  • 原文地址:https://www.cnblogs.com/liuhao-web/p/13497069.html
Copyright © 2011-2022 走看看