javascript – 如何使用Leaflet API从纬度和经度坐标检索LayerPoint(X,Y)

前端之家收集整理的这篇文章主要介绍了javascript – 如何使用Leaflet API从纬度和经度坐标检索LayerPoint(X,Y)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我使用以下代码从指定的Lat / Lng获取LayerPoint:
var latLng = new L.latLng(-37.81303878836989,144.97421264648438);
var point = map.latLngToLayerPoint(latLng);

输出如下:

o.Point
  x: 86042
  y: 77065

然后当我尝试使用以下URL访问图层图层:

http://a.tile.osm.org/10/86042/77065.png

我得到一个404,因为它是一个无效的X,Y

现在,如果我使用以下代码

map.on("click",function (e) {
    console.log(e);
});

我可以在控制台中沿纬度和经度检索LayerPoint.

latlng: o.LatLng
  lat: -37.81303878836989
  lng: 144.97421264648438
layerPoint: o.Point
  x: 950
  y: 303

然后访问以下URL将返回此图层:

http://a.tile.osm.org/10/950/303.png

问题在于,它似乎并不是纬度经度的正确拼图,也不是我的原始代码将lat lng转换为LayerPoint实际上返回一个有效的X,Y.

我很困惑,为什么我得到这些结果.任何帮助将不胜感激.也许我在做错事.

我不知道是否有另一种方法根据纬度和经度列表来检索图层图层?

之后我的原因是因为我想要使用缓存的瓦片数据进行脱机应用程序,唯一的数据是通过为客户端应用程序生成的geoJSON有效载荷的几何/坐标.

更新:

结束了这个功能(感谢@scai).

根据this link.

var getSlippyTileLayerPoints = function (lat_deg,lng_deg,zoom) {
    var x = (Math.floor((lng_deg + 180) / 360 * Math.pow(2,zoom)));
    var y = (Math.floor((1 - Math.log(Math.tan(lat_deg * Math.PI / 180) + 1 / Math.cos(lat_deg * Math.PI / 180)) / Math.PI) / 2 * Math.pow(2,zoom)));

    var layerPoint = {
        x: x,y: y
    };

    return layerPoint;
};

OUTPUT:

Object {x: 924,y: 628}

http://a.tile.osm.org/10/924/628.png

更新2:

经过进一步的研究,事实证明,我以后是以下功能

var layerPoint = map.project(latlng).divideBy(256).floor();
console.log(layerPoint.x,layerPoint.y);

解决方法

经过进一步的研究,我以后是以下功能
var layerPoint = map.project(latlng).divideBy(256).floor();
console.log(layerPoint.x,layerPoint.y);
原文链接:https://www.f2er.com/js/153227.html

猜你在找的JavaScript相关文章