OpenLayers3加载离线百度地图(百度迁徙底图)

本文介绍如何使用OpenLayers加载离线版的百度地图作为底图。通过自定义TileGrid和TileImage源,调整分辨率和坐标系,实现了流畅的地图显示效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于openlayers加载离线百度地图的东东好几年前就做过了,不过当时做的是2.0版本的。


自从好久没有去做可视化分析之后,也很少接触这些前端的JS的东西了。最近想实现一个东西的时候,才想起需要用到一些比较干净的底图。


于是刚好选用了百度迁徙后面的底图。


由于百度的JS包东西太多,需要的东西太复杂,于是就选用openlayers来进行测试。果然还是非常流畅。


var projection = ol.proj.get("EPSG:3857");
    var resolutions = [];
    for(var i=0; i<19; i++){
        resolutions[i] = Math.pow(2, 18-i);
    }
    var tilegrid  = new ol.tilegrid.TileGrid({
        origin: [0,0],
        resolutions: resolutions
    });


    var baidu_source = new ol.source.TileImage({
        projection: projection,
        tileGrid: tilegrid,
        tileUrlFunction: function(tileCoord, pixelRatio, proj){
            if(!tileCoord){
                return "";
            }
            var z = tileCoord[0];
            var x = tileCoord[1];
            var y = tileCoord[2];


            if(x<0){
                x = "M"+(-x);
            }
            if(y<0){
                y = "M"+(-y);
            }


        //## 核心代码处,将百度地图的调用网址修改为离线的地图瓦片服务网址
return "http://localhost:8080/baidu2/"+z+"/"+parseInt(tileCoord[1]/100)+"/"+parseInt(tileCoord[1]/100)+"/"+x+"_"+y+".png"
        }
    });


    var baidu_layer = new ol.layer.Tile({
        source: baidu_source
    });


    var map = new ol.Map({
        target: 'map',
        layers: [baidu_layer],
        view: new ol.View({
            center:  [12959773,4853101],
            zoom: 5
        })
    });


通过上述模式,调用展示结果如下:


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值