我想请求帮助来处理地图Leaflet上可能使用的非标准坐标.
我想使用Leaflet用我自己的tile生成器显示自定义地图.通过脚本动态生成平铺,具体取决于计划显示的位置(对脚本的URL请求中的参数{x},{y},{z})地图将可缩放(从0到10),大小在最大变焦范围内~16000*16000个瓷砖,最少16*16个瓷砖)它将显示各种对象,每个对象在一个单独的图块中.每个64*64像素的图块是地图上的对象.对于每个对象(方形图块),我想通过AJAX请求向服务器发送鼠标单击信息.我不想为了优化目标预先加载有关所有对象的所有信息.我的主要问题 - 我无法理解如何正确获取鼠标点击的图块的XYЯ坐标.基本上因为从服务器加载每个tile时绑定到网格{x},{y},{z},所以我想从点击中获取这些{x},{y},{z}映射并发送它们以获取有关该对象的信息的进一步AJAX请求.现在可以将点击点作为Latlng坐标或坐标相对于地图的左上角以像素为单位,我无法引用切片网格.
而且我想知道获得相对于瓷砖的点击坐标的可能性.例如,如果图块的尺寸为64*64,并且单击位于图块的中心,那么如何获得点击[32,32]的相对坐标?因为如果我们知道了瓷砖的{X},{Y},{Z}坐标以及瓷砖内部点击的相对X*和Y*坐标,那么我们就可以做"通用替代坐标网格".
可能这不是问题而且可以轻松解决,但我从未使用任何Maps API,因此我想知道这个问题的答案.
在此先感谢您的帮助!
下面是获取点击图块的缩放,X和Y坐标的一个工作示例(使用openstreet地图):http://jsfiddle.net/84P9r/
function getTileURL(lat, lon, zoom) { var xtile = parseInt(Math.floor( (lon + 180) / 360 * (1<<zoom) )); var ytile = parseInt(Math.floor( (1 - Math.log(Math.tan(lat.toRad()) + 1 / Math.cos(lat.toRad())) / Math.PI) / 2 * (1<<zoom) )); return "" + zoom + "/" + xtile + "/" + ytile; }
根据答案/sf/ask/17360801/