Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在传单中设置图像偏移?_Javascript_Leaflet_Mapbox_Openstreetmap_Mapbox Gl Js - Fatal编程技术网

Javascript 如何在传单中设置图像偏移?

Javascript 如何在传单中设置图像偏移?,javascript,leaflet,mapbox,openstreetmap,mapbox-gl-js,Javascript,Leaflet,Mapbox,Openstreetmap,Mapbox Gl Js,是否可以使用传单基于偏移移动瓷砖层 问题是,我使用OSM数据在地图上显示标记和建筑轮廓,但由于我使用的是另一个瓷砖提供商,所以OSM数据与卫星图像不同步 是否有一种简单的方法可以在传单中添加偏移量 附上openstreetmap iD编辑器的截图: 是否可以使用传单基于偏移移动瓷砖层 是否有一种简单的方法可以在传单中添加偏移量 有几种方法可以抵消传单L.tillelayer,但它们并不直接。我建议在执行这样一项任务之前,先阅读并阅读传单的源代码 一种方法是在计算分幅CSS偏移的特定代码位

是否可以使用传单基于偏移移动瓷砖层

问题是,我使用OSM数据在地图上显示标记和建筑轮廓,但由于我使用的是另一个瓷砖提供商,所以OSM数据与卫星图像不同步

是否有一种简单的方法可以在传单中添加偏移量

附上openstreetmap iD编辑器的截图:

是否可以使用传单基于偏移移动瓷砖层

是否有一种简单的方法可以在传单中添加偏移量


有几种方法可以抵消传单
L.tillelayer
,但它们并不直接。我建议在执行这样一项任务之前,先阅读并阅读传单的源代码

一种方法是在计算分幅CSS偏移的特定代码位上使用a,即:

该内部方法接受平铺坐标,并返回相对于传单所称的原始像素的像素坐标。这些概念是非常重要的

因此,我可以通过子类化
L.TileLayer
并为
\u getTilePos
创建一个具有新实现的新类(但重用父类的实现)来创建装饰器,例如

见a

这将使平铺的CSS位置(由
L.Point
的实例表示)偏移25个水平和垂直像素。注意偏移量是CSS像素;不是米,也不是纬度/经度

可以根据瓷砖坐标(从中可以导出纬度、经度和比例尺)确定偏移量,但我怀疑如果不小心进行所涉及的大地测量计算(即如何从瓷砖坐标计算米数),可能会出现人工制品(如瓷砖之间的间隙)

是否可以使用传单基于偏移移动瓷砖层

是否有一种简单的方法可以在传单中添加偏移量


有几种方法可以抵消传单
L.tillelayer
,但它们并不直接。我建议在执行这样一项任务之前,先阅读并阅读传单的源代码

一种方法是在计算分幅CSS偏移的特定代码位上使用a,即:

该内部方法接受平铺坐标,并返回相对于传单所称的原始像素的像素坐标。这些概念是非常重要的

因此,我可以通过子类化
L.TileLayer
并为
\u getTilePos
创建一个具有新实现的新类(但重用父类的实现)来创建装饰器,例如

见a

这将使平铺的CSS位置(由
L.Point
的实例表示)偏移25个水平和垂直像素。注意偏移量是CSS像素;不是米,也不是纬度/经度

可以根据瓷砖坐标(从中可以导出纬度、经度和比例尺)确定偏移量,但我怀疑如果不小心进行所涉及的大地测量计算(即如何从瓷砖坐标计算米数),可能会出现人工制品(如瓷砖之间的间隙)

_getTilePos: function (coords) {
    return coords.scaleBy(this.getTileSize()).subtract(this._level.origin);
},
var OffsetTileLayer = L.TileLayer.extend({
    _getTilePos: function (coords) {
        var pos = L.TileLayer.prototype._getTilePos.call(this, coords);
        return pos.add([25, 25]);
    },
});

var offsetTileLayer = new OffsetTileLayer(/* etc */);
offsetTileLayer.addTo(map);