Leaflet: getLatLngs, das mit Polygon verwendet wird, gibt kein Array zurück

Erstellt am 23. Dez. 2016  ·  4Kommentare  ·  Quelle: Leaflet/Leaflet

So reproduzieren Sie

Broschürenversion, die ich verwende: 1.0.2
Browser (mit Version) Ich verwende: Chrome & FF
Betriebssystem/Plattform (mit Version) Ich verwende: Windows 10

Welches Verhalten erwarte ich und welches Verhalten sehe ich

getLatLngs, das mit Polygon verwendet wird, gibt kein Array zurück, sondern LatLngs als String. Bei Verwendung mit Polyline-Array von LatLng wird zurückgegeben. Dies funktionierte gut mit Version 0.7.7.

Minimalbeispiel, das das Problem reproduziert

var latlngs = [
    [45.51, -122.68],
    [37.77, -122.43],
    [34.04, -118.2]
    ];
var polyline = L.polyline(latlngs, {color: 'red'}).addTo(map);
alert(polyline.getLatLngs().length);

var polygon = L.polygon([
    [51.509, -0.08],
    [51.503, -0.06],
    [51.51, -0.047]
    ]).addTo(map);
alert(polygon.getLatLngs().length);

Verwenden Sie http://playground-leaflet.rhcloud.com/ oder eine andere jsfiddle-ähnliche Site.

Hilfreichster Kommentar

Der Rückgabewert von L.Polygon.getLatLngs() ist tatsächlich ein Array mit einem Element.

Dies geschieht in https://github.com/Leaflet/Leaflet/blob/b1c2e99c1faf5d7a518a3260c22eb920a7512945/src/layer/vector/Polygon.js#L106 seit https://github.com/Leaflet/Leaflet/pull/3279 , um sicherzustellen dass es eine Liste von Ringen gibt, keine Liste von LatLng s. Verwenden Sie einfach polygon.getLatLngs()[0] , um die LatLng s des äußeren (und einzigen) Rings zu erhalten.

Alle 4 Kommentare

Der Rückgabewert von L.Polygon.getLatLngs() ist tatsächlich ein Array mit einem Element.

Dies geschieht in https://github.com/Leaflet/Leaflet/blob/b1c2e99c1faf5d7a518a3260c22eb920a7512945/src/layer/vector/Polygon.js#L106 seit https://github.com/Leaflet/Leaflet/pull/3279 , um sicherzustellen dass es eine Liste von Ringen gibt, keine Liste von LatLng s. Verwenden Sie einfach polygon.getLatLngs()[0] , um die LatLng s des äußeren (und einzigen) Rings zu erhalten.

Das erklärt alles, vielen Dank!

Sollte die offizielle Dokumentation http://leafletjs.com/reference-1.0.3.html#polyline -getlatlngs nicht geändert werden, um etwas anderes als LatLng[] anzugeben?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen