4
对于画布图层,如何访问特定瓷砖的单击像素?给定像{ lat: 37.68816, lng: -119.76196 }
那样的LatLng,我该如何:#1,检索点击的正确拼贴,以及#2,拼贴内的像素坐标?这两个都应该考虑maxNativeZoom
。项目小册子LatLng以瓷砖像素坐标
对于画布图层,如何访问特定瓷砖的单击像素?给定像{ lat: 37.68816, lng: -119.76196 }
那样的LatLng,我该如何:#1,检索点击的正确拼贴,以及#2,拼贴内的像素坐标?这两个都应该考虑maxNativeZoom
。项目小册子LatLng以瓷砖像素坐标
需要像L.CRS.EPSG3857
这样的CRS。地图的CRS可通过map.options.crs
访问。真正的变焦,平铺尺寸(像256,但也可以是约512 maxNativeZoom
或更高),并且需要的像素原点像map.getPixelOrigin()
:
const latlngToTilePixel = (latlng, crs, zoom, tileSize, pixelOrigin) => {
const layerPoint = crs.latLngToPoint(latlng, zoom).floor()
const tile = layerPoint.divideBy(tileSize).floor()
const tileCorner = tile.multiplyBy(tileSize).subtract(pixelOrigin)
const tilePixel = layerPoint.subtract(pixelOrigin).subtract(tileCorner)
return [tile, tilePixel]
}
首先,转换latlng
到的层点。现在所有单位都以像素为单位。
二,除以tileSize
并舍入。这给出了瓦片“滑动”的坐标。
第三,乘以tileSize
得到瓷砖角落的像素坐标,调整为pixelOrigin
。
最后,要获取瓦片像素,从原点和瓦片角落减去图层点。
此外,请阅读Leaflet教程,特别是关于[扩展Leaflet以创建新图层](http://leafletjs.com/examples/extending/extending-2-layers.html)的教程。这里对像素坐标和像素原点的概念进行了详细解释。 – IvanSanchez