2014-11-14 1 views
1

전단지에서 루프 (eachLayer)를 종료하려면 어떻게해야합니까?각 층 전단지를 어기는 방법 은요?

breakreturn을 시도했지만 작동하지 않았습니다. 다음은

내 코드입니다 :

var bounds = map.getBounds(); 
    var notInBounds = true; 
    markers.eachLayer(function(marker) { 
     if (bounds.contains(marker.getLatLng())) { 
      notInBounds = false; 
      break; 
     } 
    }); 
+0

2017 년 1 월을 기준으로 답변이 업데이트되었으므로 루프를 벗어나는'eachLayer'에서'false;를 반환 할 수 있습니다. – jamez14

답변

0

(난 당신이 eachLayer 루프를 아프게하지해야한다고 의견에 동의 ... 그래서이 대답이 재미 순전히)

그것은 불가능합니다 https://github.com/Leaflet/Leaflet/blob/master/src/layer/Layer.js#L103

eachLayer: function (method, context) { 
     for (var i in this._layers) { 
      method.call(context, this._layers[i]); 
     } 
     return this; 
    }, 
,369 : 자신의 루프를 작성하지 않고 ...

eachLayer 매우 간단한 방법이다

보시다시피 콜백의 반환 값을 확인하지 않습니다. 대신 eachLayer를 호출

, 당신은 당신이 다음 콜백에서 반환 값을 처리 할 수 ​​ (에 대한) 자신의 반복을 구현하고

+0

'_layers'는 개인 회원으로, 이는 Leaflet API의 일부가 아니며 이후 버전의 Leaflet에서 삭제 될 수 있음을 의미합니다. 루프를 깨는 것이 실제 성능을 향상시키는 지 고려하십시오. * 많은 레이어가없는 경우에는 그 차이가 중요하지 않다고 생각합니다. – Liedman

1

하지 마십시오 중단해야 다음 break와 방법은 반환됩니다 break이없는 경우와 동일한 값이며 성능 차이는 무한합니다.

관련 문제