W dokumentacji do ulotek tutaj: http://leafletjs.com/reference-1.2.0.html#circlemarker mówi, że CircleMaker rozszerza Circle, i że jest to to samo, z wyjątkiem tego, że promień jest określony w pikselach zamiast w metrach, tak, że koła pozostają stały rozmiar, nawet jeśli powiększysz mapę.Ulotka: Koło zachowujące się inaczej niż CircleMarker
Potrzebuję jednak Kręgów, ponieważ próbuję narysować okręgi o promieniu 100 m na mapie. Aby to zrobić, należy użyć następującego kodu:
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);
Działa to doskonale, jednak w przypadku zmiany kodu do korzystania z „Circle” zamiast circlemaker cała mapa nie zostaje wczytana, a pojawia się błąd javascript:
Error: Error: Invalid LatLng object: (56.229917, NaN)
mogę rozwiązać ten problem poprzez wstępne filtrowanie GeoJSON usunąć te punkty, które nie dysponują zarówno długość i szerokość geograficzną, ale jestem zdezorientowany: Koło i circlemaker zarówno określić, że podejmują one długość i szerokość geograficzną-przedmiot specyfikacji centralnie, nie rozumiem, jak określony obiekt LatLng może być ważny jako punkt środkowy dla CircleMarker, ale nieważny, jeśli jest używany jako punkt środkowy okręgu.
Czy przeoczyłem coś oczywistego, czy jest to tylko słabość i/lub błąd w ulotce, którą będę musiał po prostu obejść?
Awesome! Dziękuję Ci. Wydaje się to ogólnie warte, więc myślę, że ta łatka powinna zostać wysłana również do twórców ulotek. – Agrajag
Co się z tym stało? –
Każda aktualizacja w tej sprawie? – kuanb