Gewusst wie: abrufen von LayerPoint (X, Y) von Breite und Länge Koordinaten mit Hilfe von Leaflet API

Wenn ich den folgenden code verwenden, um die LayerPoint aus einem angegebenen Lat/Lng:

var latLng = new L.latLng(-37.81303878836989, 144.97421264648438);
var point = map.latLngToLayerPoint(latLng);

Die Ausgabe ist folgende:

o.Point
  x: 86042
  y: 77065

Dann, wenn ich versuche, auf der Ebene Fliese mit folgender URL:

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

Bekomme ich einen 404, weil es einen ungültigen X, Y.

Nun, wenn ich den folgenden code verwenden:

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

Kann ich abrufen die LayerPoint in der Konsole neben dem Längen-und Breitengrad.

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

Dann Zugriff auf die folgende URL, wird diese Schicht Fliese:

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

Gewusst wie: abrufen von LayerPoint (X, Y) von Breite und Länge Koordinaten mit Hilfe von Leaflet API

Das problem ist, dass es nicht auch zu sein scheinen, die richtige Fliese für diesen Breitengrad, Längengrad, noch funktioniert mein original-code zu konvertieren lat lng LayerPoint tatsächlich zurück eine gültige X, Y in den ersten Platz.

Ich bin sehr verwirrt, warum bin ich immer diese Ergebnisse. Jegliche Hilfe würde sehr geschätzt werden. Vielleicht mache ich etwas falsch.

Ich bin mir nicht sicher, ob es eine andere Möglichkeit zum abrufen von Ebenen auf der Grundlage einer Liste von breiten-und Längengraden?

Der Grund, warum ich mich nach dieser ist, denn ich möchte in der Lage sein zu verwenden Cache-tile-Daten für eine Offline-Anwendung und die einzigen Daten, die ich habe, sind geometrie/Koordinaten über eine GeoJSON-Nutzlast, die generiert wird für die client-seitige Anwendung.

UPDATE:

Landete mit dieser Funktion (Dank @scai).

Laut dieser 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;
};

AUSGABE:

Object {x: 924, y: 628}

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

Gewusst wie: abrufen von LayerPoint (X, Y) von Breite und Länge Koordinaten mit Hilfe von Leaflet API

UPDATE 2:

Nach weiterer recherche, stellt sich heraus, was ich war, nachdem ist die folgende Funktion:

var layerPoint = map.project(latlng).divideBy(256).floor();
console.log(layerPoint.x, layerPoint.y);
InformationsquelleAutor fuzz | 2014-02-26
Schreibe einen Kommentar