OpenLayers 3加载本地Google切片地图

转自:http://www.cnblogs.com/Leechg/p/4684424.html

OpenLayers  提供了ol.source.XYZ 接口用以加载切片地图。

本地切片地图是用地图切片下载器下载的Google道路图层,由于软件未激活,所以每张切片地图上都有软件作者的联系方式,请忽略。

 

 

下载下来的切片地图通过Windows自带的iis发布,这样就可以通过网络地址来访问切片数据。

 

 

首先,根据ol3的接口创建了一个js方法,这个方法会根据传来的参数创建一个类型为ol.layer.Tile的图层。

1
2
3
4
5
6
7
8
9
10
11
12
13
var  TileLayer =  function  (options) {
     var  layer =  new  ol.layer.Tile({
         extent: ol.proj.transformExtent(options.mapExtent, options.fromProject, options.toProject),
         source:  new  ol.source.XYZ({
             attributions: [options.attribution],
             url: options.url,
             tilePixelRatio: options.tilePixelRatio,  // THIS IS IMPORTANT
             minZoom: options.mapMinZoom,
             maxZoom: options.mapMaxZoom
         })
     });
     return  layer;
}

配置Google切片地图的参数,并调用TileLayer方法,把返回的layer添加到地图中就可以看到Google地图正确的覆盖到OpenLayers提供的底图上。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//定义Google切片参数   
var  defaults = {
         url:  'http://localhost:8082/{z}/{x}/{y}.png' ,
         mapExtent: [-2.0037508342787E7, -2.0037508342787E7, 2.0037508342787E7, 2.0037508342787E7],
         mapMinZoom: 1,
         mapMaxZoom: 14,
         attribution:  new  ol.Attribution({
             html:  'Tiles © GoogleMap'
         }),
         tilePixelRatio: 1,
         fromProject:  "EPSG:102100" ,
         toProject:  "EPSG:3857"
     };
var  layer =  new  TileLayer(defaults);

  

配置中的formProject是指Google地图使用的投影,toProject是指底图使用的投影。

1
2
fromProject:  "EPSG:102100" ,
toProject:  "EPSG:3857"

 使用这种配置看似比较复杂,但是在很多情况下还是比较有用的,比如我们可以改变mapExtent来控制切片涂层加载的范围,改变zoom控制加载切片的比例范围,等等。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值