2012-08-15 2 views
7

여기에서 전단지에 대한 설명은 http://leafletjs.com/reference-1.2.0.html#circlemarker입니다. CircleMaker는 Circle을 확장하고 있으며, 반경이 미터가 아닌 픽셀 단위로 지정된다는 점을 제외하고는 동그라미가 계속 유지됩니다 지도를 확대하더라도 크기가 일정합니다.전단지 : CircleMarker와 다르게 작동하는 동그라미

지도에 100m 반경 원을 그리려고하기 때문에 서클이 필요합니다.

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

나는 전체지도가로드되지 않고 CircleMaker의 "원"를 사용하는 코드를 변경할 경우는, 그러나, 완벽하게 작동, 나는 자바 스크립트 오류 :이 작업을 수행하려면 다음 코드를 사용합니다 :

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

나는 위도와 경도를 모두 부족한 그 점을 제거 할 geojson을 사전 필터링하여이 문제를 해결할 수 있습니다,하지만 난 혼란 스러워요 : 서클과 CircleMaker 모두가의 사양으로 된 LatLng 객체을 지정 가운데 점, CircleMarker의 중심점으로 특정 LatLng 객체가 어떻게 유효한 지 알 수는 없지만 서클의 중심점으로 사용되는 경우 올바르지 않습니다.

나는 분명히 뭔가를 내려다 보았을 까? 아니면이 약점이나 리플렛의 버그 일까? (위도와 경도를) 함수 결함이있는 datas를 무시합니다

의 시작에 (& latlng.lat & & latlng.lng &를 위도와 경도를) 경우

답변

4

L.circle에서 leaflet.js의 _getLngRadius() 메소드를 변경하여이 문제를 해결했습니다. 리플릿 버전 0.4.4에서는 4913 줄입니다.

이 방법은 원의 반지름을 동적으로 계산하므로 circleMarker의 방법과 다릅니다. 당신이이 라인을 변경하는 경우

this._mRadius/hLength

this._mRadius.radius/hLength

에 그것을 확인해야합니다.

+0

굉장! 고맙습니다. 이것은 일반적으로 보람있는 것처럼 보이므로 패치는 전단지 개발자에게 보내야한다고 생각합니다. – Agrajag

+0

어쨌든이 일이 어떻게 되었습니까? –

+0

이것에 대한 어떤 업데이 트? – kuanb

1

당신은 추가 할 수 있습니다.

+0

그래, 나도 알아, 내가 쓴 것처럼 : 나는 문제를 피하기 위해 포함시킬 점을 필터링 할 수 있다는 것을 알고있다. 나는 그것을 피하는 것이 아니라 이해하는 것이 었습니다. 문서에서 "Circle"과 "CircleMarker"의 차이점이 없다는 것을 나타내는 것은 없습니다. – Agrajag

4

코드에 더 이상 문제가 없습니다. 이 같은 문제 때문에 다른 생성자의 쉽게 발생할 수 있지만 :

L.CircleMarker(<LatLng> latlng, <Path options> options?) 

L.Circle(<LatLng> latlng, <Number> radius, <Path options> options?) 

새 서클에 반경을 통과해야합니다.

관련 문제