Leaflet: ํฌ๊ธฐ ์กฐ์ • ์ฐฝ๊นŒ์ง€ ๋ชจ๋“  ํƒ€์ผ์ด ๋กœ๋“œ๋˜์ง€ ์•Š์Œ

์— ๋งŒ๋“  2012๋…„ 05์›” 21์ผ  ยท  8์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: Leaflet/Leaflet

์ฐฝ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜๊ฑฐ๋‚˜ ์ˆ˜๋™์œผ๋กœ ._onResize()๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•œ ํ›„์—๋งŒ ๋ชจ๋“  ํƒ€์ผ์ด ์ œ๋Œ€๋กœ ๋กœ๋“œ๋จ

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ๋ณด๊ณ ์žˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ์ผ๋ถ€ ํƒ€์ผ๋งŒ ํ‘œ์‹œ๋˜์ง€๋งŒ ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜๋ฉด ๋ชจ๋“  ํƒ€์ผ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  8 ๋Œ“๊ธ€

์ฐฝ ํฌ๊ธฐ ์กฐ์ • ์‹œ ํฌ๊ธฐ ์กฐ์ •์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. http://leaflet.cloudmade.com/debug/map/map-mobile.html

์ง€๋„ ์ปจํ…Œ์ด๋„ˆ์˜ ํฌ๊ธฐ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์กฐ์ •ํ•˜๋Š” ๊ฒฝ์šฐ map.invalidateSize() ๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ๋ณด๊ณ ์žˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ์ผ๋ถ€ ํƒ€์ผ๋งŒ ํ‘œ์‹œ๋˜์ง€๋งŒ ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜๋ฉด ๋ชจ๋“  ํƒ€์ผ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

chrome27์—์„œ ์ด ๋ฒ„๊ทธ์— ๋Œ€ํ•ด ์ˆ˜์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
URL์ด ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค

์ด๊ฒƒ์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค: http://leafletjs.com/examples/mobile-example.html

@mourner ์ง€๋„๋ฅผ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  map._onResize()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. ์œ„์˜ URL์€ ์ง€๋„ ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ „์ฒด ํ™”๋ฉด ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค. @ludinov-stuzo ํ•ดํ‚น์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

@mourner ๋ฌธ์ œ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. setTimeout()์„ ์‚ฌ์šฉํ•˜์—ฌ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํ›„ invalidateSize()๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    var is_fullScreen=0;
    $("#close_left").click(function(){
        if(is_fullScreen){
            $("#left_panel").animate({left:0,opacity:1},800);
            $("#right_panel").animate({marginLeft:280},800);
            this.className="icon-left";
            is_fullScreen=0;
            setTimeout(function(){ map.setView([5,40],2);},1000);
        }else{
            $("#left_panel").animate({left:-280,opacity:0},800);
            $("#right_panel").animate({marginLeft:0},800);
            this.className="icon-right";
            setTimeout(function(){map.invalidateSize();            map.setView([5,-20],3);},1000)
            is_fullScreen=1;
        }
    });

์ฐฝ ํฌ๊ธฐ ์กฐ์ • ์‹œ ํฌ๊ธฐ ์กฐ์ •์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. http://leaflet.cloudmade.com/debug/map/map-mobile.html

์ง€๋„ ์ปจํ…Œ์ด๋„ˆ์˜ ํฌ๊ธฐ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์กฐ์ •ํ•˜๋Š” ๊ฒฝ์šฐ map.invalidateSize() ๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ๋‚ด ํ•˜๋ฃจ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์ง€๋„๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. setView , flyTo , panTo , fitbounds ์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž‘๋™ํ•  ๋•Œ๋„ ์žˆ๊ณ  ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๋•Œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ธ์ œ ๊ทธ๋žฌ๋Š”์ง€ ์ดํ•ดํ• 

์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

Map obj๊ฐ€ ์ €์—๊ฒŒ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ง€๋„๊ฐ€ ๋กœ๋“œ๋˜๊ฑฐ๋‚˜ ํฌ๊ธฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ณ  ๋‚ด๋ถ€์—์„œ ์‹คํ–‰๋  ๋•Œ ํŠธ๋ฆฌ๊ฑฐ๋˜๋Š” ํ•จ์ˆ˜ ์ถ”๊ฐ€ - map.invalidateSize().

๋ฐ˜์‘ ํ›„ํฌ ๋ฐฉ์‹:

import { Map as LeafletMap } from "react-leaflet";

export default const MyMap = () => {

   useEffect(()=>{
        mapElement.current.leafletElement.invalidateSize();
    },[mapElement])


  /*render and other function*/
}
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰