我想出了如何通过使用createTile
函数扩展Leaflet来获取XYZ坐标的方法。
但是我想知道的是,即使我没有放大,如何访问围绕我的GPS坐标固定Z缩放级别的XY瓷砖名称/坐标。
为什么?我正在开发Uber的P2P /去中心化版本,XY坐标是很好的通用/共享位置索引,可供用户查找/订阅/查询。例如,在该X英里半径内的每个人都将知道相同的XY坐标名称,并将其用作确定彼此的确定性键。
答案 0 :(得分:1)
该项目将“以特定的缩放级别将lon,lat从0、0原点转换为屏幕像素x,y”。 https://github.com/mapbox/sphericalmercator
已更新:
function lng2tile(lon,z) { return (Math.floor((lon+180)/360*Math.pow(2,z))) }
function lat2tile(lat,z) { return (Math.floor((1-Math.log(Math.tan(lat*Math.PI/180) + 1/Math.cos(lat*Math.PI/180))/Math.PI)/2 *Math.pow(2,z))) }
或尝试以下操作:
var row = Math.floor((location.lng + 180) / (360 / Math.pow(2, zoomLevel)));
var col = Math.floor((90 + (location.lat * -1)) / (180 / Math.pow(2, (zoomLevel - 1))));