習慣沉默123 2017-06-15 10:29 采纳率: 33.3%
浏览 2067
已结题

用canvas画地图,批量加载多张瓦片地图,第一次彻底刷新不显示,之后刷新可以,求解!!!

  function load(imgX,imgY){ 
    //移动超过一个256,加载多一个图片
    var xLength = imgX/256
    var yLength = imgY/256          

     var x_ze = long2tile(116.402544,zm)-2  //根据中心点算出中心点的行列号,画布左上角(原点)的行号 ;   中心点到原点隔两行两列    
     var y_ze = lat2tile(39.913607,zm)-2    //画布左上角(原点)的列号

      for(var y=-Math.floor(yLength)+y_ze;y<6-yLength+y_ze;y++ ){       //原点的列号-移动距离(超过256像素多加载一张图片)
        for(var x=-Math.floor(xLength)+x_ze;x<6-xLength+x_ze;x++ ){         
        var x_ch = x.toString(16)      //转十六进制                
        var y_ch = y.toString(16)      //转十六进制

        var img=new Image()  
        img.src="/seismis/images/map/L0"+zm+"/R00000"+ y_ch+"/C00000"+ x_ch+".png";           

           if(img.complete){              
           drawBeauty(img,x*256-x_ze*256,y*256-y_ze*256);
           console.info("正常加载");
           }
        else{    
           img.onload = function(){
            console.info("图片未加载");
            drawBeauty(img,x*256-x_ze*256,y*256-y_ze*256);
           }
            img.onerror = function(){
              console.info("图片异常")
              drawBeauty(img,x*256-x_ze*256,y*256-y_ze*256);
           };
        }
    }
 }

}//load

  function drawBeauty(img,x,y){      
    ctx.drawImage(img,x+imgX-300,y+imgY-256,256,256); 

 }
  • 写回答

1条回答 默认 最新

  • Roseaaaa 2017-08-18 08:54
    关注

    请问这个问题解决了吗?我也遇到同样的问题了。麻烦说下正确解法可以吗?

    评论

报告相同问题?

悬赏问题

  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样