centrovanie mapy, popis LayerSwitch

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í.
pal...@...
Příspěvky: 8
Windows NT Google Chrome 63.0.323

centrovanie mapy, popis LayerSwitch

odesláno v 27 úno 2018 22:02

Zdravím,
som úplne nadšený z API máp, študovaním príkladov a príspevkov vo fóre som sa dopracoval k mape s vizitkami, ale niečo v tom kóde nehraje, pretože som schopný ho spustiť z Notepadu++, ale nie z JSFiddle (a už vôbec nie vo Wordpresse, ale tú cestu už vzdávam). Prikladám kód:
Kód: Vybrat vše
var obrazok = "http://api4.mapy.cz/img/api/marker/drop-blue.png";
            var mapa = new SMap(JAK.gel("mapa"), center, 8);
               mapa.addDefaultLayer(SMap.DEF_OPHOTO);
               mapa.addDefaultLayer(SMap.DEF_HYBRID).enable();
               mapa.addDefaultLayer(SMap.DEF_TURIST).enable();
               mapa.addDefaultControls();
            var layerSwitch = new SMap.Control.Layer();
               layerSwitch.addDefaultLayer(SMap.DEF_TURIST);
               layerSwitch.addDefaultLayer(SMap.DEF_OPHOTO);
               mapa.addControl(layerSwitch, {left:"8px", top:"9px"});
            var center = SMap.Coords.fromWGS84(19.26, 49.07);
            var data = {
               "Porúbka 1": {
                  pozicia: "49°8'31.625\"N,18°43'9.078\"E",
                  vizitka: "<b>Porúbka</b>",
                  body: "Kemp<br /><em>49.1421181N 18.7191883E</em>"
               },
               "Porúbka 2": {
                  pozicia: "49°8'43.483\"N, 18°43'31.979\"E",
                        vizitka: "<b>Porúbka</b>",
                        body: "Lietačky<br /><em>49.1424925N 18.7162800E</em>"
                    },
                    "Porúbka 3": {
                        pozicia: "49°8'32.973\"N, 18°42'58.608\"E",
                        vizitka: "<b>Porúbka</b>",
                        body: "Nolovky<br /><em>49.1454119N 18.7255497E</em>"
                    },
                };
                var znacky = [];
                var suradnice = [];
                for (var name in data) {
            var c = SMap.Coords.fromWGS84(data[name].pozicia);
            var options = {
                  url: obrazok,
                        title: name,
                        anchor: {left: 10, bottom: 1}
                    };
                var card = new SMap.Card(200);
               card.getHeader().innerHTML = (data[name].vizitka);
               card.getBody().innerHTML = (data[name].body);
               card.getBody().style.fontSize = "14px";
                var znacka = new SMap.Marker(c, null, options);
               suradnice.push(c);
               znacky.push(znacka);
               znacka.decorate(SMap.Marker.Feature.Card, card);
                }
                var vrstva = new SMap.Layer.Marker();
               mapa.addLayer(vrstva);
               vrstva.enable();
                for (var i = 0; i < znacky.length; i++) {
                    vrstva.addMarker(znacky[i]);
                }


Prosím viete mi poradiť, kde robím chybu? Jednoduchá mapa s jednou značkou ide ako po masle, keď vyrobím súbor značiek, je zle.
A ešte
- nedokážem tú mapu pri spustení stránky vycentrovať na Slovensko ani na 10 pokusov,
- neviem, či sa dá zmeniť text LayerSwitchu na Slovenčinu (Zmeniť mapu), v dokumentácii som nenašiel možnosť zmeniť title.

Dopredu vďaka,

Palo

pal...@...
Příspěvky: 8
Windows NT Google Chrome 63.0.323

Re: centrovanie mapy, popis LayerSwitch

odesláno v 27 úno 2018 22:24

Centrovanie som už vyriešil, var centre som posunul hore pred var mapa a je to ok.

ond...@...
Seznam vývojář
Příspěvky: 895
Windows NT 64 bits Firefox 58.0 64 bits

Re: centrovanie mapy, popis LayerSwitch

odesláno v 02 bře 2018 13:49

pal...@... píše:- neviem, či sa dá zmeniť text LayerSwitchu na Slovenčinu (Zmeniť mapu), v dokumentácii som nenašiel možnosť zmeniť title.


Zmenit popisek tlacitka lze napriklad takto:

Kód: Vybrat vše
layerSwitch.getContainer().querySelector("button span").innerHTML = "Nejaky novy text";


Neni to uplne oficialni zpusob (mapove API obecne nenabizi lokalizaci), ale melo by to fungovat.

pal...@...
Příspěvky: 8
Windows NT Google Chrome 64.0.328

Re: centrovanie mapy, popis LayerSwitch

odesláno v 02 bře 2018 17:24

ďakujem, funguje to. Ešte mám jeden problém so zobrazením značiek, vypisuje mi to nejaké chyby vo WGS84

Uncaught TypeError: Cannot read property 'match' of undefined
at Function.SMap.Coords._splitWGS84 (smap-jak.js:822)
at Function.SMap.Coords.fromWGS84 (smap-jak.js:819)
at (index):430

a s tým si neviem poradiť. Tu je link na stranku - https://outdoornia.com/mapa-znacky-3/

Palo

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

Re: centrovanie mapy, popis LayerSwitch

odesláno v 05 bře 2018 14:24

pal...@... píše:ďakujem, funguje to. Ešte mám jeden problém so zobrazením značiek, vypisuje mi to nejaké chyby vo WGS84

Uncaught TypeError: Cannot read property 'match' of undefined
at Function.SMap.Coords._splitWGS84 (smap-jak.js:822)
at Function.SMap.Coords.fromWGS84 (smap-jak.js:819)
at (index):430

a s tým si neviem poradiť. Tu je link na stranku - https://outdoornia.com/mapa-znacky-3/

Palo


Chyba v iteraci. Zde vas kod:
Kód: Vybrat vše
for (var name in data) {
  var center = SMap.Coords.fromWGS84(data.pozicia);
  ...


Promenna "data" je objekt s individualnimi podobjekty, teprve ty maji vlastnost "pozicia". Takze by to asi chtelo upravit na

Kód: Vybrat vše
for (var name in data) {
  var item = data[name];
  var center = SMap.Coords.fromWGS84(item.pozicia);
  ...

pal...@...
Příspěvky: 8
Windows NT Google Chrome 64.0.328

Re: centrovanie mapy, popis LayerSwitch

odesláno v 06 bře 2018 11:02

Dakujem za odpoved. Upravil som to podla navodu, ale nic sa nezmenilo, stale vyhadzuje rovnake chyby.

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

Re: centrovanie mapy, popis LayerSwitch

odesláno v 07 bře 2018 08:29

pal...@... píše:Dakujem za odpoved. Upravil som to podla navodu, ale nic sa nezmenilo, stale vyhadzuje rovnake chyby.


Nikoliv, neni to upravene podle navodu. Je tam

Kód: Vybrat vše
var item = data;


zatimco navod rika

Kód: Vybrat vše
 var item = data[name];

Zpět na Mapy API v4.0