2017-10-08 2 views
0

이 질문은 previous question과 관련됩니다.Mapbox에서 getLayer를 사용하여지도 소스 ID를 추출하는 방법은 무엇입니까?

지도 맵에는 버튼 목록이 있고, 값을 정렬하고 이에 따라 특정 레이어를 표시하는 jQuery 기능이 있습니다. 상호 작용의이 부분은 래스터 맵의 레이어를 표시하기 때문에 각 선택 항목에 fitBounds 이벤트가 필요합니다.

getLayer을 사용하여 경계를 추출 할 수 있을지 궁금합니다. 각 레이어에 속성 배열을 제공하기 때문에 소스 링크를 추출해야하며 getBounds과 함께 사용할 수 있습니다. 그러나 어떻게?

여기 내 코드가 있습니다.

$("#yearselect button").click(function(){ 
    var mapnum = $.text(this); 
    if ($(this).hasClass("selected")) { 
    $(this).removeClass("selected"); 
    map.setLayoutProperty(mapnum, "visibility", "none"); 
    basicreset(); // resets other filters 
    yearreset(); // resets previous selections 
    } 
    else { 
    $(this).addClass("selected"); 
    $("#yearselect button").not(this).removeClass("selected"); 
    $("#typeselect input").prop("checked", true); 
    $("#yearselect button").each(function() { 
     map.setLayoutProperty(($.text(this)), "visibility", "none"); 
     }); 
    map.setLayoutProperty("railway", "visibility", "visible"); 
    map.setLayoutProperty("railway case", "visibility", "visible"); 
    map.setLayoutProperty("sat", "visibility", "visible"); 
    map.setLayoutProperty(mapnum, "visibility", "visible"); 
    map.setFilter("vislis-1sep2017", ["none", [">=", "Opening date", mapnum],["<=", "Closing date", mapnum], ["in", "Opening date", "Closing date", "??"]]); 
    map.setFilter("railway", ["none", [">", "Opening date", mapnum],["<", "Closing date", mapnum], ["in", "Opening date", "Closing date", "??"]]); 
    map.setFilter("railway case", ["none", [">", "Opening date", mapnum],["<", "Closing date", mapnum], ["in", "Opening date", "Closing date", "??"]]); 
    map.setPaintProperty("limits", "line-color", "#ffffff"); 
    document.getElementById('active-year').innerText = mapnum; // updates time slider 
    document.getElementById('ranger').value = mapnum; // moves time slider's range 
    $("#resetslider").hide(); 
    } 
    }); 

답변

0

정확하게 이해하면지도의 뷰포트를 지정된 레이어의 경계와 일치 시키려고합니다. 다음과 같이 할 수 있어야합니다.

map.fitBounds(map.getSource(map.getLayer('my-layer').source).bounds); 
+0

Perfect !! 고맙습니다! 매력처럼 작동합니다. 나는 Mapbox 함수를 캐스케이드 할 수 있다는 것을 몰랐다. – east1999

관련 문제