Leaflet: Π½Π΅ всС ΠΏΠ»ΠΈΡ‚ΠΊΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ Π΄ΠΎ измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΎΠΊΠ½Π°

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 21 мая 2012  Β·  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 Π― ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»

    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 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ