openlayers加载百度地图

     最近在做openlayers添加百度地图的扩展类,经过轮番的尝试,终于将其接入了,但是发现偏差比较大,有根据百度的坐标进行了比对,将切片原点进行了调整,发现OK了。打开百度地图,可以看出切片的路径如:http://online1.map.bdimg.com/tile/?qt=tile&x=742&y=248&z=12&styles=pl&udt=20141113,在发现百度地图的切片规则也是和google一样,采用TMS进行切片的,因此剩下的工作就是去查找切片和行列层级号的命名规则。代码如下:
getURL: function (bounds) {
      var tilez=this.map.zoom-1;
      var res = this.map.getResolution();
      var bbox = this.map.getMaxExtent();
      var size = this.tileSize;
      var bx = Math.round((bounds.left - this.tileOrigin.lon) / (res * size.w));
      var by = Math.round((bounds.bottom - this.tileOrigin.lat) / (res * size.h));
      tilez = tilez + 1; 
      var x = bx.toString().replace("-","M");  
      var y = by.toString().replace("-","M"); 
      var urlsNum = parseInt((bx + by) % this.url.length); 
      var strURL = ""; 
      strURL = this.url[urlsNum] + '?qt=tile&x='+x+'&y='+y+'&z='+tilez+'&styles=pl&udt=20140807';
      return strURL;
    }

在代码中:主要是this.tileOrigin这个参数影响切片的位置,这个就是切片原点,若将其设置为[0,0],发现和百度坐标偏差较远,经过查看,得知将其设置为:[43.88955327932,12.590178885765]这样就可以和百度地图完全对应上了。对接百度地图就OK了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值