首页 > 代码库 > openlayers对接百度地图新方法
openlayers对接百度地图新方法
上次给大家提供的openlayers对接百度地图有些问题,是因为没有进行分辨率设置,也没有进行相应的平面坐标转换,获取getURL的方法还是没有变化的
1 getURL: function (bounds) { 2 var tilez=this.map.zoom-1; 3 var res = this.map.getResolution(); 4 var bbox = this.map.getMaxExtent(); 5 var size = this.tileSize; 6 var bx = Math.round((bounds.left - this.tileOrigin.lon) / (res * size.w)); 7 var by = Math.round((bounds.bottom - this.tileOrigin.lat) / (res * size.h)); 8 tilez = tilez + 1; 9 var x = bx.toString().replace("-","M"); 10 var y = by.toString().replace("-","M"); 11 var urlsNum = parseInt((bx + by) % this.url.length); 12 var strURL = ""; 13 strURL = this.url[urlsNum] + ‘?qt=tile&x=‘+x+‘&y=‘+y+‘&z=‘+tilez+‘&styles=pl&udt=20140807‘;14 return strURL;15 },
主要是前端调用时候的设置有所更改,在new map时需要传入两个参数
projection:"EPSG:900913",
displayProjection:"EPSG:4326"
以平面形式对接,
var tileOrigin = new OpenLayers.LonLat(0,28000);//这个参数在对接中还是稍微有y轴的偏移,考虑因该是百度平面坐标系不是基于web墨卡托投影,而这个用的是web墨卡托投影的方式却对接的。
var maxExtent = new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34);
new Layer的时候需要传入的opts = {
numZoomLevels:20,
maxResolution:262144,
maxExtent :maxExtent ,
tileOrigin :tileOrigin
}
openlayers对接百度地图新方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。