OpenLayers-自定义图像在一层上的马赛克
OpenLayers - Mosaic of custom images on one layer
有可能有一个由自定义图像马赛克组成的层吗?
我只能通过OpenLayers.Layer.Image
在给定的图层上获得一个自定义图像。从本质上讲,如果我能找到一种方法为给定层的瓷砖指定自定义图像,那么我的问题就会得到解决。
我尝试过OpenLayers.Tile
、OpenLayers.Tile.Image
、OpenLayers.Layer
和OpenLayers.Layer.Grid
的各种组合,但都无法正常工作。
我遵循的基本流程是:
var map = new OpenLayers.Map('map');
var layer = new <OpenLayers.Layer | OpenLayers.Layer.Grid> (<parameters>);
var tile1 = new <OpenLayers.Tile | OpenLayers.Tile.Image> (<parameters>);
map.addLayer(layer);
map.zoomToMaxExtent();
下面提供了如何初始化每个构造函数的具体示例。
关于OpenLayers.Layer.Grid
,我实际上不确定为url和params构造函数参数指定什么。
任何关于这是否有效和/或我是否走上正轨的建议都将不胜感激。
OpenLayers.Layer
var layer = new OpenLayers.Layer(
'layer_name',
{
isBaseLayer: true
}
);
OpenLayers.Layer.Grid
var layer = new OpenLayers.Layer.Grid(
'layer_name',
?url?,
?params?
);
OpenLayers.Tile
var layer = new OpenLayers.Tile(
layer_name,
new OpenLayers.Pixel(0,0),
new OpenLayers.Bounds(-1,-1,1,1),
'square1.jpg',
new OpenLayers.Size(300,300)
);
OpenLayers.Tile.Image
var layer = new OpenLayers.Tile.Image(
layer_name,
new OpenLayers.Pixel(0,0),
new OpenLayers.Bounds(-1,-1,1,1),
new OpenLayers.Size(300,300),
{
url: 'square1.jpg'
}
);
你试过缩放图层吗?这是一个例子。它允许您在地图中加载来自给定目录的所有图像,该目录以{z}-{x}-{y}.jpg
的形式命名,其中{z}
是缩放级别。
如果你需要将图像分割成更小的瓦片,我建议你使用这个免费的MapTiler软件,它可以根据你的需要创建任意缩放级别的瓦片。
您可以使用TMS layer:创建图像平铺的地图层
var layer = new OpenLayers.Layer.TMS("TMS Layer","",
{url: '', serviceVersion: '.', layername: '.', alpha: true,
type: 'png', getURL: getTileURL
}
);
map.addLayer(layer);
TMS层使用getTileURL
函数来查找要显示的拼接图像。此函数假定图像存储在一个层次结构中,类似于MapTiler创建的层次结构
例如:img/tiles/7/4/1.png是缩放级别7的左起第5位和底部第2位的图像。
function getTileURL(bounds)
{
var res = this.map.getResolution();
var x = Math.round((bounds.left - this.maxExtent.left) / (res * this.tileSize.w));
var y = Math.round((bounds.bottom - this.maxExtent.bottom) / (res * this.tileSize.h));
var z = this.map.getZoom();
var path = "img/tiles/" + z + "/" + x + "/" + y + "." + this.type;
var url = this.url;
if (url instanceof Array)
{
url = this.selectUrl(path, url);
}
return url + path;
}
相关文章:
- 有没有一个抽象层,这样我就可以集成一次,然后使用pusher、pubnub或faye
- 有人能提供一张ember数据与broswer's的持久层
- OpenLayers-自定义图像在一层上的马赛克
- 如何打破每一层传单
- Photoshop 脚本 - 如何在一种历史记录状态下创建文本图层
- 动能Js清除一层
- 在CSS中每隔一个子层着色一次
- 如何显示具有多种样式的一层贴图
- KineticJS-在屏幕外的画布上绘制一层
- 什么'这是一种流行的编程技术,用于处理多步骤、多层过程中的故障
- Framer.js:操作层's通过另一层的动画状态's单击事件
- Json,在另一层获取信息
- 如何处理点击在画布上的某一层
- 对于JavaScript多维数组的深度拷贝,深入一层似乎就足够了.这是真的吗?
- 强制重新粉刷一层
- 从JS数据结构中删除一层嵌套数组
- 如何在HTML5画布中停止一层中的动画而不影响另一层
- Bing地图Api清除一层
- 自定义JSON.stringify不能对整个对象进行stringify,但在迭代一层时有效
- 如何递归地列出对象属性,并将它们全部列在'一层深'-对象中