Leaflet: getLatLngs usado com polígono não retorna matriz

Criado em 23 dez. 2016  ·  4Comentários  ·  Fonte: Leaflet/Leaflet

Como reproduzir

Versão do folheto que estou usando: 1.0.2
Navegador (com versão) que estou usando: Chrome e FF
SO / plataforma (com versão) que estou usando: Windows 10

Que comportamento estou esperando e que comportamento estou vendo

getLatLngs usado com polígono não retorna matriz, mas LatLngs como string. Se usado com a matriz de polilinha de LatLng, é retornado. Isso funcionou bem com a versão 0.7.7.

Exemplo mínimo reproduzindo o problema

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);

Usando http://playground-leaflet.rhcloud.com/ ou qualquer outro site semelhante ao jsfiddle.

Comentários muito úteis

O valor de retorno de L.Polygon.getLatLngs() é, na verdade, uma matriz de um elemento.

Isso é feito em https://github.com/Leaflet/Leaflet/blob/b1c2e99c1faf5d7a518a3260c22eb920a7512945/src/layer/vector/Polygon.js#L106 desde https://github.com/Leaflet/Leaflet/pull/3279 , para garantir que existe uma lista de anéis, não uma lista de LatLng s. Simplesmente use polygon.getLatLngs()[0] para obter os LatLng s do anel externo (e único).

Todos 4 comentários

jsfiddle está aqui https://jsfiddle.net/qccxwp64/2/

O valor de retorno de L.Polygon.getLatLngs() é, na verdade, uma matriz de um elemento.

Isso é feito em https://github.com/Leaflet/Leaflet/blob/b1c2e99c1faf5d7a518a3260c22eb920a7512945/src/layer/vector/Polygon.js#L106 desde https://github.com/Leaflet/Leaflet/pull/3279 , para garantir que existe uma lista de anéis, não uma lista de LatLng s. Simplesmente use polygon.getLatLngs()[0] para obter os LatLng s do anel externo (e único).

Isso explica tudo, muito obrigado!

A documentação oficial http://leafletjs.com/reference-1.0.3.html#polyline -getlatlngs não deveria ser alterada para indicar algo diferente de LatLng[] ?

Esta página foi útil?
0 / 5 - 0 avaliações