Fórum nápovědy

Seznam

Chyba renderingu dlaždic

No Such

28.3.2023 v 21:53

Dobrý den, chtěl bych ohlásit chybu renderingu dlaždic. Jedná se o některé dlaždice vrstvy basic (ale myslím, že i outdoor a winter), zoom 16, řada y=21921 (např. 256/16/35389/21921) (v retina dlaždicich se chyba neobjevuje). Tyto dlaždice obsahují podivné objekty sestávající z trojúhelníku a šesticiferné popisky (netuším, co znamenají), možná jsou i někde jinde, já jsem je objevil jen v této řadě a oblasti a jen v zoomu 16. Tyto objekty zřejmě způsobují onu chybu, protože postižené dlaždice obsahují jen tyto objekty, jinak jsou transparentní (png). Můžete prosím tuto chybu odhalit, odstranit buď ji anebo ony objekty a dlaždice přerenderovat? Děkuji.

No Such

28.3.2023 v 22:35

V této souvislosti jsem si všiml, že se na jednom z mých zařízení používají retina (@2x, 512x512) dlaždice. Je možné nějak zařídit, aby se stahovaly jen základní 256x256 png dlaždice, i když prohlížeč by vybral ze srcset ty 2x, aby se zmenšilo množství přenášených dat?

No Such

29.3.2023 v 1:09

Tedy - ono by to asi šlo udělat takhle:
delete Smap.CONFIG[Smap.DEF_BASE].retinaUrl
ale to by nemuselo fungovat v dalších verzích. Otázka tedy je, zda neexistuje nějaké čistší řešení?

Jan Buriánek

29.3.2023 v 11:25

No já sice nepomůžu, protože jsem po pravdě nepochopil problém - "na jednom z mých zařízení používají" - co kdo jak používá jinak? Pokud to programujete, tak přece natvrdo ve scriptu určíte, které dlaždice se mají stahovat. A script si sám nic jiného nevymyslí.

Ale kvůli tomu nepíšu, chtěl jsem jen napsat, že já používám u nového designu svého webu (zatím jen pracovně na svém PC) právě ty dlaždice @2x, protože mapa je mnohem kontrastnější a tedy lepší i na běžném monitoru. Ale je to jen u turistické. Takže když přepnu na základní, přijde mi to vyloženě rozmazané, jak už jsem si zvyknul na práci ve vyšším rozlišení.
Také mě tedy zajímalo, jak hodně více to bude brát dat. No a prozkoumáním síťové komunikace je vidět, že je to asi o necelou polovinu maximálně. Strašně záleží, jak složitý-členěný je obrázek dlaždice.
Problém je totiž v tom, že standardní dlaždice jsou PNG, zatím co detailnější jsou v JPG.
No a pro členěný obraz je JPG mnohem silnější komprese, než PNG, které je bezestrátové, vhodné třeba pro sken obrazovky s textem.
Jinak řečeno, navýšení objemu dat podrobnějších dlaždic je kompenzováno vyšší úrovní komprese.
Takže mi to vychází tak, že dané navýšení je velmi malá daň za to, o jak moc je vzhled obrazu ostřejší.

Co se týká spotřeby množství dlaždic, tak ta je samozřejmě stejná, pokud za dlaždice platíte.

No Such

29.3.2023 v 12:49

Jedná se o zobrazování dlaždic v api mapy (SMap), ne o konzumaci dlaždic přes placenou službu. Za jízdy se neustále stahují další dlaždice (a když se vyčerpá kapacita cache browseru, pokud se vůbec cacheují, tak opakovaně), a které, to určuje browser podle <img srcset...>, a pokud běží na "retina" displeji, vybere si @2x. Měsíční objem dat takto stažených je značný, chci zkusit, o kolik by se snížil, aby nebylo třeba platit neomezená mobilní data.

A propos, k tomu "pokud za dlaždice platíte", nikde jsem nenašel, kolik ty dlaždice vůbec stojí.?? Nebylo by to levnější, stáhnout je do foroty, než platit data?

Jan Buriánek reagoval na příspěvek od No Such

29.3.2023 v 15:00

Pokud spadáte v licenčních podmínkách do kategorie zdarma, tak samozřejmě neplatíte nic.
Tedy například se nejedná o uzavřený podnikový systém, a máte aplikaci buď jen pro sebe, nebo volně dostupnou všem, bez zisku, datová spotřeba dlaždic je v rámci menšího projektu atd.
Licenční podmínky jsou přímo na výchozí straně api.mapy.cz, a až kam se smí zajít zdarma, tedy od kdy se již musí platit, limituje bod 4.
Stáhnout dlaždice do foroty se nesmí ani omylem, to je přímo zakázáno jako neoprávněné kopírování dat, bod 5.7.1

ceník:
https://developer.mapy.cz/cena/cenik-premioveho-uziti/

No Such

29.3.2023 v 20:21

Děkuji za ceník.
To "stahování do foroty", popřípadě cacheování již jednou navštívených dlaždic, jsem myslel v rámci placené služby (předpokládám, že pokud aplikace premioveho uživatele placeně stáhne dlaždici, je na ní, k čemu a kdy ji použije (samozřejmě pokud ji nezveřejní apod.)).
Moje myšlenka směřovala k tomu, zda by nebylo levnější zaplatit konzumaci dlaždic, které bych stáhl jen jednou, než za neustálé stahování týchž dlaždic v rámci api mapy zdarma platit vysokou sumu za neomezené mobilní připojení operátorovi, což značně zatěžuje můj rozpočet.
No, a podle ceníku vidím, že nebylo.
Vyvíjím aplikaci svého druhu asistenta za jízdy autem, kterou budu používat jen já sám. Použití api mapy zdarma je pro tuto aplikaci velkým přínosem, i když možnosti tohoto api jsou velmi omezené, takže je potřeba naprogramovat spoustu dalších funkcionalit. To není problém, to umím, je to jen spousta práce. Jen se tím neumím uživit, neznám nikoho, kdo by mi za to zaplatil, takže se snažím omezit náklady, např. na ta mobilní data.
Čímž se vracím k tomu, jak lze api mapy vysvětlit, že nechci aby browser stahoval @2x dlaždice, které mu api nabízí v srcset, ale jen ty základní 256x256, ty by mi stačily. Řešení, které jsem uvedl v předchozím příspěvku jsem vyzkoušel a funguje, jen mi nepřipadá elegantní, takže: jde to udělat lépe?

Jan Buriánek reagoval na příspěvek od No Such

29.3.2023 v 21:59

Aha, tak to se musím trochu omluvit, ono si to API rozhoduje samo, když se vkládají defaultlayer, asi, mám to už pomíchaný, jak dělám v Leafletu, tam je to natvrdo definované jako tileLayer (třeba: https://api.mapy.cz/v1/maptiles/outdoor/256@2x/{z}/{x}/{y})
spíš mě překvapuje, že jde i základní pro retina, měl jsem dojem, že jen turistická, mýlil jsem se

Co třeba to tedy taky zkusit natvrdo:
var xxx = new SMap.Layer.Tile("xxx", "https://api.mapy.cz/v1/maptiles/basic/256/", {query:"{zoom}/{x}/{y}"})
m.addLayer(xxx)

a použít to místo
m.addDefaultLayer(SMap.DEF_BASE)

musí se to samozřejmě vřadit do přepínače vrstev atd
layerSwitch.addLayer("xxx", "základní")

Já to prostě zkusil na svém původním webu v pracovní verzi, místo xxx jsem měl "osm", co tam mám, a chodilo to. I ta verze 256@2x
Musel jsem jen trochu zapátrat nad správným řetězcem query...

Ještě doplním, jak píšete kus výše, že by to "delete" nemuselo fungovat v dalších verzích, je spíš otázka, zda nějaké další verze původního API vůbec budou...
Takže chodí-li to, tak je to OK.
Ještě by se možná mohlo místo delete prostě tomu parametru přepsat hodnotu na stejnou, jako pro normální dlaždice, ale nezkoušel jsem to:
SMap.CONFIG[SMap.DEF_BASE].retinaUrl = SMap.CONFIG[SMap.DEF_BASE].url

No Such

29.3.2023 v 23:58

To s tím retinaUrl=url by asi fungovat mohlo, jen mi to připadá, víceméně totéž jako to delete, vrstvy které nemají retina dlaždice v configu to retinaUrl (např. ophoto/aerial) take nemají. A funguje to, a zatim se zdá, že to stahuje mnohem méně dat. A propos, jste si jist, že @2x dlaždice jsou v api mapy zdarma jpeg? Matně si vzpomínám, že jsem se kdysi díval do konzole, a pokud mě paměť neklame, byly to png (přes 100kb)...
A to řešení přes Layer.Tile mě napadlo také, ale vycházel jsem z představy, že tato vrstva je určena pro externí servery (používám ji pro osm) a že se tam tudíž automaticky nepřidává querystring s sdk a virtuálním api klíčem, takže bych to do query parametru musel přidat sám. Ne že by to nešlo, dají se zjistit až podezřele snadno, dokonce i ještě před tím, než se stáhne první dlaždice (pak je to vidět v jejím src, srcset i currentSrc), ale to mi připadá ještě méně čisté. Upřímně jsem nezkoušel, zda by to fungovalo bez nich, ale to by znamenalo, že přístup k dlaždicím není chráněn vůbec, a tomu se mi nechce věřit...
Ještě jsem se díval do licence, a opravdu tam je zakázáno dokonce i cacheování dlaždic, což nastoluje otázku, jak je to vlastně myšleno, protože obrázky ukládá do cache i browser, takže by se to api nesmělo používat v browseru? A kde tedy?Kdysi jsem řešil, jak ukládání do cache browseru zakázat, a pomocí hlaviček http odpovědí to nešlo, jediné, co pomohlo, bylo přidání timestampu do querystringu.
Spíše bych řekl, že jde o zákaz ukládání dlazdic pro použití jinými uživateli a aplikacemi...
Bylo by velmi milé, kdyby šlo zařídit, aby to api fungovalo i offline...
Někdo by mohl navrhnout, abych použil jinou platformu (leaflet, osm), ale já potřebuji mapy.cz kvůli číslům domů, ty jsou v osm dost chybové.
Nebo bych mohl použít aplikaci mapy.cz, ta jde offline, ale zase do ní nejdou naroubovat další funkcionality. Potřebuji aby se mapa sama natáčela a posouvala za jízdy, zoomovala podle rychlosti, kreslila stopu, to vše bez toho, abych zapínal navigaci, aby se poloha v čase zaznamenavala, a aby mapa šla posouvat, zoomovat a rotovat pomocí gest. Toto vše mám kolem api mapy víceméně vyřešeno. A přepínač vrstev (a vůbec ani jiné ovládací prvky z api) nepoužívám, neboť jsou stupidní, vrstvy (včetně osm) přepínám sám, pomocí větších tlačítek, což je za jízdy celkem potřeba.
Ještě k tomu osm - v podmínkách 4.4 stojí, že je zakázáno v api požívat mapy z jiných zdrojů, tak k čemu je Layer.Tile?

Jan Buriánek reagoval na příspěvek od No Such

30.3.2023 v 11:50

Vyvíjíte docela náročnou aplikaci :)

Jo, dlaždice x2 jsou v jpg, viz příloha, stačí zapnout nástroje pro vývojáře a síť.
Někam jsem náhodně zvětšil mapu, aby to nebylo nakešovaný, a přepnul jsem z obecné na turistickou, kterou mám v x2.
A nalistoval jsem konec komunikace.
Načítané dlaždice se změnily na jpg a porovnejte ty velikosti, jsou to dlaždice ze stejné oblasti.
Nad čarou jsou základní v png a pod turistické x2 v jpg.
Jinak zimní je jen png a letecká naopak jpg.

Já taky nejsem z týmu Mapy.cz, mám vlastní web, ale už v tom dělám přes 2 roky. A řekl bych, že je to takhle:
chráněné už jsou dlaždice stahované přímo z https://mapserver.mapy.cz, dříve nebyly, viz třeba zde:
https://napoveda.seznam.cz/forum/threads/68508/1
předposlení příspěvek (p.Laš)

No a mapserver poskytuje data přímo pro jejich mapy a pak, když vyřídí požadavky Mapy.cz, tak ve zbylém čase poskytuje data pro požadavky z api.mapy.cz -- to je tedy jiný server, přes který jsou dlaždice poskytovány ven pro api
No a tam se to ještě třídí tak, že když přes API přijde požadavek s platným klíčem, nějakým placeným prémiovým, tak ten má přednost před volnými požadavky zdarma.
Takže bez palceného přístupu jste jednoduše poslední na řadě, až severům zbyde čas :)

Jestli tedy vkládáte vrstvu jako defaulut, nebo vlastní SMap.Layer.Tile je jedno (ten default tam stejně taky vytvoří vrstvu, akorát z nějakých přednastavených hodnot), důležité tam je to "SMap" což reprezentuje knihovnu JAK, a takovéto požadavky jsou brány jako od jejich scriptu, tedy OK, nemusí mít klíč.
Jakmile to zkusíte odjinud, třeba z Leafletu, tak už u toho musí být API klíč:
L.tileLayer("https://api.mapy.cz/v1/maptiles/basic/256/{z}/{x}/{y}?apikey=........)

Ještě doplním: první obrázek "síť" je z Leafletu s klíčem a druhý přidaný z SMap, tedy bez klíče. Iniciátor prozrazuje, že servery moc dobře vědí, z čeho přišel požadavek

No Such

30.3.2023 v 21:20

Děkuji za obrázky.
No, není to zase tak náročné z hlediska složitosti, to už jsem dělal horší věci, jak to udělat je celkem jasné, jen je to spousta práce, o to větší, že nemám počítač (Windows), takže to vyvíjím na androidu, a ty stovky řádků je prostě potřeba napsat (Quick edit). A protože to je PWA aplikace a browser nemá přístup na lokální disk, je třeba napsat i pár serverů na localhost (node.js). Bylo tam ale několik oříšků, např. ta rotace mapy. Tehdy jsem ještě používal Smap ovládací prvky, takže jsem nemohl otáčet přímo kontejner celé mapy (transform:rotate), to by se otáčely i ty ovládací prvky. Musel jsem tedy najít kontejner všech mapových (i geometrické a markeru) vrstev, ale ten má rozměr 0x0 a position:absolute, a přemísťuje se při posunu mapy pomocí left a top, takže ty jsem pro nalezení středu otáčení (transform:origin) musel znát. Zkoušel jsem je pollovat, ale to se chovalo děsně, nakonec jsem je musel zachytit předefinováním CSSStyleDeclaration zavedením left a top jako accessorů se setterem a getterem... Ale hlavně, že se povedlo.
Máte pravdu, dlaždice @2x jsou od zoomu 7 výše jpeg, do zoomu 6 jsou png, ty jsem asi předtím viděl já. Zatím to vypadá tak, že jejich velikost je u nižších zoomů (větší komplexnost) zhruba stejná jako základní png, u zoomu 17 uz je ale asi 1.5x a u zoomu 19 asi 2x větší. No, snad to trochu pomůže.
Ty obrázky dlaždic jpeg jsou opravdu pěkné, možná až moc, jsem přesvědčen že by šly zkomprimovat ještě více, to ale bohužel dělat nesmíme, že?
Co se týče těch api klíčů, tím iniciátorem to asi nebude, to je soubor s javascriptem, který dotaz na server vyvolal, i když u obrázků nevím, zdá je to ten, který obrázek vytvořil, nebo ten, který nastavil jeho src a další, ani co by tam stálo, kdyby byl obrázek i s atributy přímo v html, dotaz na stažení obrázku ale vytváří browser sám. Šlo by to udělat i přes xhr a data obrázku předat přes data url, tam by v hlavičkách dotazu mohlo být leccos, tady to ale tak není, protože src obsahuje url serveru a ne data url. Pokud to správně chápu, tak browser sám od sebe iniciátor dotazu do dotazu nezahrnuje (proč by měl obecně každý server znát názvy souborů javascriptu, které mohou (SMap) ale nemusí pocházet z něj, tím spíše u cors dotazu (vaše stránka asi není na serveru api.mapy.cz), to, že vaše stránka obsahuje kromě vašeho javascriptu ještě javascript stažený z jiného serveru ještě neznamená, že názvy js souborů browser musí tomuto serveru (ani obecně jiným) hlásit při dalších dotazech na něj), takže ho server nemůže znát (pokud ano, ve které hlavičce?). Spíše to bude tak, že Smap knihovna přidává sdk a apikey automaticky i do dotazů z Layer.Tile, pokud v query je host api.mapy.cz. Ostatně na vašem obrázku z Smap je vidět querystring začínající ?sdk=, za ním bude nejspíš í &apikey=virtual-... No pokud je to tak, tak je to zase o něco přímočařejší, tuto možnost si zapamatuji, zatím tam nechám to delete, abych to nemusel přepisovat.

Jan Buriánek reagoval na příspěvek od No Such

30.3.2023 v 22:56

Jo, tušil jsem že s tím iniciátorem "vařím z vody", nevím jak to celé přesně je, jen je jasné, že si to prostě web api má jak poznat a to je vše.
Že jsou různé jpg/png v závislosti na zvětšení jsem si zase nevšiml já... Netušil jsem to :) Dík.

No Such

30.3.2023 v 23:33

Má to jak poznat, protože Smap přidává k dotazům zdarma querystring:
?sdk=xxxxxxxxxx&apikey=virtual-xxxxxxxxxx
Pokud server vyhodnotí jsou tyto hodnoty jako správné, vrátí dlaždici. Striktně vzato tedy server nezjišťuje zda dotaz přišel z Smap, nemá jak, jen to předpokládá, pokud jsou hodnoty správně.
Proto jsem si myslel, že to přes Layer.Tile nepůjde, ale když říkáte, že to jde, tak to tam Smap asi přidává taky. Abych to ověřil, musím se dostat k windowsovskému chromu a napsat pokusný script a k tomu localhostový server, s vývojářským nástrojem v chromu pro android se pracuje dost složitě.

Jan Buriánek reagoval na příspěvek od No Such

31.3.2023 v 9:18

Jo, skutečně jsem to zkusil, v pracovní verzi původního webu na PC, tedy toho na api SMap, mám tam OSM variantu map, a ta jde přes to Layer.Tile, to je jasné, tak jsem jen změnil url adresu na tu seznamáckou, a klikal na ikonu OSM :) Napoprvé to nešlo, nevěděl jsem přesně kde končí url adresa a co do query, ale asi na potřetí to šlo. A zkoušel jsem i tu x2 a taky jde, hned je znát, že je to kontrastnější.

Jinak jak jsem včera četl ten váš příspěvek, tak bojujete s kdečím - jako já u toho webu gpxmapy.cz :)
To by bylo na román... :)
Třeba to rozlišení, věděl jsem, že to tam někde je, ale tenkrát jsem nevěděl jak to tam dostat. Měl jsem vlastně opačný problém, než zde řešíme, PC to samo retinu nenabídne. Už jsem to pak neřešil. Nyní jste mě vlastně s tou definicí natvrdo nakopnul, tak jsem to zkusil. No a se zkušenostmi to byla čtvrthoďka :)
Nyní už ale přes 4 měsíce ležím v Leafletu, tam mám x2 od začátku, je to tam jasné. Tento víkend to budu dávat na web, mám hotovou první verzi... Vypadá to pěkně, ale je na tom ještě nekonečně práce. Znáte to :) Nudit se nebudu...

No Such

31.3.2023 v 11:52

A jak jste tedy přesně nastavil parametr query v oné Layer.Tile, jestli se mohu zeptat? Pokud by to fungovalo tak, jak jsem pochopil, mělo by tam být jen (pro basic):
https://api.mapy.cz/v1/maptiles/basic/256/{zoom}/{x}/{y}
pro @2x místo 256 bude 256@2x
querystring, tedy otazník a to co je za ním
?sdk=xxxx&apikey=virtual-xxxx
by pak mělo přidat Smap.

Jan Buriánek reagoval na příspěvek od No Such

31.3.2023 v 16:12

Tak, jak jsem to psal v třetím příspěvku:
var xxx = new SMap.Layer.Tile("xxx", "https://api.mapy.cz/v1/maptiles/basic/256/", {query:"{zoom}/{x}/{y}"})
m.addLayer(xxx)

Takto to chodí. Místo těch "xxx" jsem tam akorát měl "osm"

No a v příloze možno odzkoušet, i tak to jde - obě verze naráz :)
Je na tom hezky vidět rozdíl :)

No Such

31.3.2023 v 21:52

Aha, sorry, ona se ta obecná url píše do extra parametru, ale to je formalit a, jinak je to tak, jak jsem to myslel, takže tam Smap ten querystring přidává, asi podle toho, že host je api.mapy.cz. To byste zjistil ve vývojářské konzoli. Na androidu je vývojářská konzole těžkopádná.
Děkuji.

Ale je to vidět i viz příloha. Zajímalo by mě, co když to api.mapy.cz nebude (např. osm). Zkusite to?

Jan Buriánek reagoval na příspěvek od No Such

1.4.2023 v 0:28

Nevím přesně co mám zkoušet, ale:

z Leafletu je tam pro OSM nic, tedy např:
https://tile.openstreetmap.org/8/144/88.png - bez ničeho dalšího, celkem jasné pro neomezované stahování

z Leafletu pro api.mapy.cz je tam prostě přidaný klíč (to musí být právě platný prémiový klíč)
https://api.mapy.cz/v1/maptiles/outdoor/256@2x/5/16/12?apikey=...... - a dost, nic víc, není tam sdk

z SMap pro OSM:
https://tile.openstreetmap.org/8/142/89.png?sdk= ...hromada znaků... &apikey=virtual- ... a virtuální klíč

a z SMap pro api mapy:
https://api.mapy.cz/v1/maptiles/outdoor/256/8/141/91?sdk= ...hromada znaků... &apikey=virtual- ... a virtuální klíč

Pokud jsem správně pochopil otázku, tak je to zde ta třetí varianta a je zcela stejná s poslední, prostě SMap to tam zřejmě přidává i pro OSM, asi celkem zbytečně, server openstreetmap to prostě ignoruje.
Je totiž otázka, zda původní api, tedy SMap, bylo vůbec zamýšleno pro nějaké jiné dlaždice než ty z mapy.cz :)

Teď mě víc vrtá hlavou nový dotaz zde ve fóru, že mimo ČR nejde letecká mapa do detailů, jako přímo na mapy.cz. Už jsem to zkoušel a je to tak.
Přijde mi, že dřív to nebylo tak podrobné ani přímo na Mapy.cz, byla to nějaká google satelitní mapa. Teď to mají zřejmě mnohem podrobnější a něco mi říká, že detailní letecké mapy celého světa nebudou tak úplně zadarmo a na api zbyde jen ten nepodrobný satelit. Tak uvidíme, co se dozvíme, nevím.

No Such

1.4.2023 v 2:01

Tak to je teda kino, Smap to do Layer.Tile zřejmě přidává omylem, což je pro přímý výběr rozlišení zaplaťpánbůh dobře, a také zaplaťpánbůh, že to osm nevadí. Co by se stalo, kdyby osm nebo jiný server vyžadoval klíč, který by se jmenoval apikey? Je to stejně stupidní, jako to, že globální objekt pro inicializaci Smap se jmenuje Loader, a ne např. MapyCzSMapLoader (když už se nepoužije namespace). Nebo si autoři myslí, že Loader je tak geniální a neopakovatelný název, že by nenapadl tvůrce jiné knihovny, kterou by někdo mohl chtít používat zároveň? A to by měl asi smůlu, ledaže by Smap nevadilo, že by se stažením a spuštěním dalšího skriptu globální Loader předefinoval, to ale asi vadit bude, leda že by se vlastnosti v Loader pak někam překopírovaly, Loader obsahuje leccos důležitého, podívejte se třeba na https://api.mapy.cz/virtual-key.js
Zřejmě původní Smap nebyl zamýšlen nejen pro externí zdroje, ale nejspíš pro nic, a i pojem zamýšlen je eufemizmem, když se podívám, jaká je úroveň jeho dokumentace; když budu počítat jen to, co je dokumentováno celkem dobře, tak to neumí skoro nic, i zadarmo je to drahý. Co jsem se např. natrápil s průhlednostmi ve vrstvě geometry... Ještě že si umíme poradit, že?
Toho s těmi leteckými mapami jsem si všiml také, mimo cz fungují jen do zoomu asi 13, a na rozhraní je vidět, že jsou z různých zdrojů. Ale vzhledem k tomu, že mapy.cz pravděpodobně nemají pro zahraničí vlastní mapová data, tak přebírají jiná (osm?), jen z nich možná sami renderují dlaždice (a to se jim také nedaří vždy, jak jsem uvedl v základním příspěvku úplně na začátku, ale na to nikdo nereagoval a ty zmíněné dlaždice nejsou přerenderovány doteď), tak bude asi stejně lepší pro zahraničí používat google (nebo osm). Takze to mě na všech mapách trápí nejmíň.
Jo, a ještě k tomu neomezenému stahování osm, bude neomezené jen do té doby, než zablacklistují ip adresu...

Jan Buriánek reagoval na příspěvek od No Such

1.4.2023 v 9:32

:))
Pokud název Loader bude i někde jinde, tak to znamená, že ten někdo jiný udělal stejnou "chybu". Pokud ostatní u toho myslí, tak mají jiný název, a ke kolizi nedojde, protože "chybný" více nespecifikovaný název "Loader" bude mít jen API mapy... :))))
Ale nehledal bych problém tam, kde ho nemám. Když náhodou někomu vyvstane, tak ho holt bude nějak řešit.
Třeba takový Leaflet - tem má vše pod jedním velkým "L".
Co umí nebo neumí původní api mapy už zjišťovat nebudu, nepotřebu ju to. Mám pro svůj web API prémiový klíč a jedu na Leafletu.
No pravda, stejně tam načítám i SMap, protože přes něj čtu elevaci, nové REST api to ještě nemá. Ale s API klíčem mi to ještě ani jednou nevrátilo chybu, takže ani nemám jak vyzkoušet znovuzaslání getAltitude požadavku...

No a že původní api není dokonalé - a co je dnes dokonalé?. Nemám jim to za zlé, tvořili to v začátcích, i tak je v tom necháno opravdu fůra práce.
A je to zdarma. Souběžně s tím běžel vývoj i jinde a dnes už jsou jiné knihovny tak promakané, že netřeba se jim snažit konkurovat, na to nejsou lidi.
Tým mapy má plné ruce práce se svým webem, údržbou mapových podkladů, a vlastní aplikací, kterou by třeba neměli, věnovali-li by se api... Nejde dělat vše. Přesto dále pracují na novém REST api, až bude hotové, bude snad nějakým způsobem také přístupné zdarma pro menší projekty.
A do toho mraky požadavků od uživatelů, co všechny by chtěli :))
A programátorů je málo...

Ano, nápověda původního api není dodělaná ani zdaleka, když jsem před dvěma lety začínal, tak to ještě vypadalo, že tam přidají třeba i jak se pracuje s kontextem a mnoho dalšího, nakonec ale původní api očividně odpískali, už se tomu podle mě nebudou věnovat. Mají nové REST api a knihovnu nechť si každý vybere podle svého gusta.
Myslím, že je to správné řešení.

Jakub Kraft • tým Mapy.cz

1.4.2023 v 20:35

Dobrý den,

s původním problémem ohledně dlaždic vám pomoci nedovedu, do renderování dlaždic nevidím, ale předpokládám, že kolegové se to už snaží opravit.

Nicméně začetl jsem se a rád bych trochu reagoval. Předně pokud jde Mapy API v jeho stávající podobě, asi není důvod nijak si brát servítky v jeho kritizování. Je staré bezmála 12 let ve své stávající major verzi, tedy cokoliv, co jste zmiňovali (například Loader jako globální proměnná) jsou jistě relevantní, ale právě vzhledem k tomu věku bezpředmětné připomínky. Během let bylo rozšiřováno, ale nikdy ne přepsáno. A k jeho cti je třeba dodat, že v době, kdy vznikalo, byla víceméně jediná alternativa Google Maps API ve své také prehistorické podobě a to pro náš vlastní projekt ze zjevných důvodů nepřipadalo v úvahu. Vzniklo tedy toto a jako gesto dobré vůle bylo tehdy i uvolněno mezi lidi. V posledních letech už dochází pouze ke změnám, které buď opravují chyby, nebo pomáhají omezovat zneužívání zdrojů přímou konzumací. Nedá se očekávat, že by se někdy dočkalo nové verze.

Pokud jde o užití Mapy API, tak moje osobní doporučení je: nedělejte to. Respektive pokud vám stačí na stránku O nás, Kontakty a podobně hodit mapku a na ní marker na místě, kde je vaše firma, tak asi v pořádku, ale pokud chcete něco sofistikovanějšího, tak sáhněte po čemkoliv modernějším a pokud je to možné, napojte to na data našeho nového REST API. Javascriptové Mapy API tu zkrátka stále je, ale jeho životní cyklus se doufejme blíží ke konci.

Konkrétně problém, kdy chci natáčet mapu, sledovat "kamerou" pohybující se marker, animovat trasu (třeba jen tím, že na ní přibývají body a ona tak tedy jedním směrem roste), udržovat marker rotovaný dle konce cesty (ať už kolmý nebo naopak rovnoběžný s vektorem trasy), rotovat celou mapou, naklopit celou mapu... to všechno zvládá MapLibre celkem snadno. Stejně tak pokud potřebujete jakkoliv pracovat s geometriemi udanými pomocí geografických souřadnic (WGS84), tak nenajdete asi lepší knihovnu než Turfjs, pokud jde o převody mezi souřadnicovými systémy zase jedině proj4. Staré Mapy API vznikalo v době, kdy tyto nástroje neexistovaly a tedy si s sebou nese například i značnou podmnožinu jejich funkcionality.

Zmiňované MapLibre má navíc i jakousi implemetaci pro Android, takže je dost možné, že by nebylo nutné pracovat s PWA, když nativní aplikace pro Adroid by mohla být lepší.

Jakub Kraft

Nový dotaz

Přiložené přílohy

    Zbývá 12MB (z 12MB)

    Chyba renderingu dlaždic

    Přiložené přílohy

      Zbývá 12MB (z 12MB)