Листовка :Круг ведет себя иначе, чем CircleMarker

В документации к Leaflet здесь:http://leafletjs.com/reference-1.2.0.html#circlemarkerв нем говорится, что CircleMaker расширяет Circle, и это то же самое, за исключением того, что радиус указывается в пикселях, а не в метрах, так что круги остаются постоянного размера, даже если вы масштабируете карту.

Однако мне нужны круги, потому что я пытаюсь нарисовать на карте круги радиусом 100 м. Для этого я использую следующий код:

var geojsonLayer = new L.GeoJSON(null,{
pointToLayer: function (latlng){
    return new L.CircleMarker(latlng, {
        radius: 5,
        fillColor: "#ff7800",
        color: "#000",
        weight: 1,
        opacity: 1,
        fillOpacity: 0.8,
    });
}});

map.addLayer(osm);
map.addLayer(geojsonLayer);
geojsonLayer.addGeoJSON(jsonExample);

Это работает отлично, однако, если я изменю код, чтобы использовать «Circle» вместо CircleMaker, вся карта не загрузится, и я получу ошибку javascript:

Error: Error: Invalid LatLng object: (56.229917, NaN)

Я могу исправить это, предварительно -отфильтровав геоджсон, чтобы удалить те точки, в которых отсутствуют как широта, так и долгота, но я запутался. :Circle и CircleMaker указывают, что они принимают объект LatLng -в качестве спецификации center -, я не понимаю, как определенный объект LatLng может быть действительным в качестве центральной точки -для CircleMarker, но недействительным, если он используется в качестве центральной точки для Circle.

Я упускаю из виду что-то очевидное, или это просто слабость и/или ошибка в Leaflet, которую мне просто нужно обойти?

7
задан AndrewHarvey 1 November 2017 в 04:09
поделиться