setReposition

Diskuse k nové verzi mapového API. Napište nám, co se vám na novém API libí či nelíbí a přispějte svými komentáři a připomínkami k jeho zdokonalení.
546...@...
Příspěvky: 13
Windows Seven 64 bits Firefox 45.0 64 bits

setReposition

odesláno v 08 dub 2016 10:06

Zdravím,
mám otázku na setReposition() -jsou k dispozici parametry, které by přepozicování vypínaly a zapínaly?

Jde mi o to, že na mapě mám cca 400 bodů a při větším oddálení mapy trvá skriptu vypočítat pozici bodů tak, aby se nepřekrývaly. Vyřešit jsem to chtěl tak, že při větším oddálení se setReposition vypne, a až při přiblížení od zoomu třeba 15 se zapne.

ond...@...
Seznam vývojář
Příspěvky: 894
Ubuntu Linux 64 bits Firefox 45.0

Re: setReposition

odesláno v 11 dub 2016 14:27

Nu,

setReposition({}) zapne (s vychozim nastavenim) a setReposition(null) vypne. Konkretni nastaveni se ruzne upravuje a zatim proto neni zverejneno.

Pokud ted rozhazovani moc trva, je mozne pri zmene zoomu (signal map-redraw a test, doslo-li ke zmene zoomu) reposition vypnout/zapnout.

Alternativou je pouzit shlukovac -- http://api4.mapy.cz/view?page=clusters

lad...@...
Příspěvky: 10
Windows NT 64 bits Google Chrome 63.0.323

Re: setReposition

odesláno v 07 úno 2018 10:14

Dobry den,
pokud mam nekde vice znacek na jedne pozici a pro vrstvu ve ktere jsou, nastaven shlukovac, vytvori se shluk, ale pri kliknuti se neroztahne a znacky nezobrazi.
muzete mi prosim poradit.
Dekuji

ond...@...
Seznam vývojář
Příspěvky: 894
Ubuntu Linux 64 bits Firefox 58.0

Re: setReposition

odesláno v 12 úno 2018 09:42

lad...@... píše:Dobry den,
pokud mam nekde vice znacek na jedne pozici a pro vrstvu ve ktere jsou, nastaven shlukovac, vytvori se shluk, ale pri kliknuti se neroztahne a znacky nezobrazi.
muzete mi prosim poradit.
Dekuji


Asi bude nutne zacit tim, ze poslete URL, na ktere to bude videt.

lad...@...
Příspěvky: 10
Windows NT 64 bits Google Chrome 64.0.328

Re: setReposition

odesláno v 13 úno 2018 14:57

Bohuzel mam to v mobilni aplikaci, ktera jeste neni vystavena.
Kód: Vybrat vše
 function ViewSimpleMapCoords(x,y, zoom) {
           var  center =  SMap.Coords.fromWGS84(x, y);
           m = new SMap(JAK.gel("m"), center, zoom);
           gpx = null;
           StartX = null;
           StartY = null;
           poloha = null;
           StartMarker = null;
           EndMarker = null;
                               
         
            layers[SMap.DEF_BASE] = m.addDefaultLayer(SMap.DEF_BASE);
            layers[SMap.DEF_TRAIL] = m.addDefaultLayer(SMap.DEF_TRAIL);

            layers[SMap.DEF_BASE].enable();
            layers[SMap.DEF_TRAIL].enable();


            var labels = {};
            m.addControl(new SMap.Control.Zoom(labels, { titles: ["Přiblížit", "Oddálit"], showZoomMenu: false }), { right: "9px", bottom: "70px" });// left: "8px", top: "9px"
            m.addControl(new SMap.Control.Sync());
         
            mouse = new SMap.Control.Mouse(SMap.MOUSE_PAN | SMap.MOUSE_WHEEL | SMap.MOUSE_ZOOM);
            m.addControl(mouse);

           
            vrstvaZnacekTrasy = new SMap.Layer.Marker();
            m.addLayer(vrstvaZnacekTrasy);           
            vrstvaZnacekTrasy.enable();
            vrstvaZnacekTrasy.setReposition({});

            vrstvaznacek = new SMap.Layer.Marker();
            m.addLayer(vrstvaznacek);
            vrstvaznacek.enable();
            vrstvaznacek.setReposition({});
            clusterer = new SMap.Marker.Clusterer(m);
            vrstvaznacek.setClusterer(clusterer);

         

            mapclicklistenerId =  m.getSignals().addListener(window, "map-click", click);
            signals = m.getSignals();
            signals.addListener(window, "marker-drag-stop", stop);

            Button.prototype.getContainer = function () {
                return this._node;
            };

            Button.prototype.setOwner = function () { }

            var b = new Button();
            m.addControl(b, { right: "9px", top: "9px" });

            GPXButton.prototype.getContainer = function () {
                return this._node;
            };

            GPXButton.prototype.setOwner = function () { }
            MarkLayerButton.prototype.getContainer = function () {
                return this._node;
            };

            MarkLayerButton.prototype.setOwner = function () { }

            layer = new SMap.Layer.Marker();
            m.addLayer(layer);
            layer.enable();

        }

a znacky pridavam metodou
Kód: Vybrat vše
 
function AddMarkerWithIcon(path, name, x, y,imagePath,interestId,label2) {
         
            var obrazek = path;
            var coords = SMap.Coords.fromWGS84(x, y);
            options = {
                url: obrazek,
                title: name
               
            };



            var card = new SMap.Card();
            card.getHeader().innerHTML = "<strong>" + name + "</strong>";
            card.getBody().innerHTML = "<table style='width:100%;background-color:blue'><tr><td><img src=" + imagePath + " style=object-fit:contain ></td></tr><tr><td><i>" + label2 + "</i></td></tr></table>"; //
            console.log(imagePath);
            var bod = new SMap.Marker(coords, name, options);           
            bod.decorate(SMap.Marker.Feature.Card, card);
            vrstvaznacek.addMarker(bod);

            JAK.Events.addListener(card.getHeader(), "click",
                //Vizitkaclick
                function (e, elm) {
                  JAK.Events.cancelDef(e);
                  CardClicked(interestId);
                 
                }
            );

        }

ond...@...
Seznam vývojář
Příspěvky: 894
Ubuntu Linux 64 bits Firefox 58.0

Re: setReposition

odesláno v 15 úno 2018 12:56

Dovolil jsem si z vaseho kodu vyrobit jsfiddle, ktere ovsem funguje dle zadani -- po kliku na shluk dojde k rozpadu a prizoomovani: https://jsfiddle.net/k5dbbeaq/

lad...@...
Příspěvky: 10
Windows NT 64 bits Google Chrome 64.0.328

Re: setReposition

odesláno v 16 úno 2018 12:47

Kód: Vybrat vše
 AddMarkerWithIcon(null, "aaa", 14, 50, null, "a", "b" )
 AddMarkerWithIcon(null, "bbb", 14.1, 50, null, "a", "b" )

tady prave davate upravene coordinaty
pokud vsak zadate
Kód: Vybrat vše
 AddMarkerWithIcon(null, "aaa", 14, 50, null, "a", "b" )
 AddMarkerWithIcon(null, "bbb", 14, 50, null, "a", "b" )

pak se stane to co je podstatou me otazky
kolecko s dvojkou nelze rozkliknout. myslela jsem, ze prave toto ma na starosti vrstvaznacek.setReposition({});
napriklad do vrstvaZnacekTrasy nasledne take vetsinou pridavam dva body se stejnym umistenim a tam to funguje.
Děkuji

ond...@...
Seznam vývojář
Příspěvky: 894
Ubuntu Linux 64 bits Firefox 58.0

Re: setReposition

odesláno v 19 úno 2018 13:50

Bohuzel, pouzivat zaroven "reposition" i "clusterer" neni moc dobre funkcni. Reposition je posouva jen vizualne, takze pro potreby souvisejicich vypoctu (zejmena: kam nazoomovat mapu po kliknuti na shluk) jsou porad na identickych souradnicich. A shluk znacek na identickych souradnicich nemuze dobre fungovat, protoze po kliku na nej neni kam nazoomovat (do zoomu "nekonecno" :-) ).

lad...@...
Příspěvky: 10
Windows NT 64 bits Google Chrome 64.0.328

Re: setReposition

odesláno v 22 úno 2018 12:40

mohu tedy nejak reagovat na zmenu zoomu a od daneho zrusit cluster a pak ho na nejake hodnote zase vratit?
nejsem uplne zbehla v javascriptu, pokud to takto nejak jde, bylo by mozne pridat priklad.
Dekuji

ond...@...
Seznam vývojář
Příspěvky: 894
Ubuntu Linux 64 bits Firefox 58.0

Re: setReposition

odesláno v 27 úno 2018 15:23

Zkusil bych vyjit z ukazky https://api.mapy.cz/view?page=signals, ktera napovi, jak reagovat na ruzne udalosti mapy. Udalost "map-redraw" bude asi nejvhodnejsi: jakmile nastane, podivame se na aktualni zoom. Pokud se zoom od minuleho "map-redraw" zmenil, provedeme pripadnou upravu logiky znackove vrstvy.

Zpět na Mapy API v4.0



cron