AMapy.cz API plugin do wordpressu
Nedávno jsem koupil jeden web, kde bylo implementováno API k českým mapám amapy.cz. Sice fungovalo, nicméně bylo dost těžkopádné. Bylo částečne přímo v šabloně a pak se musely dopisovat kusy javascriptu do metadat ke článku. Samotná mapa se vždy zobrazila na konci stránky. Takže jsem to zrušil a napsal vlastní plugin do wordpressu pro zobrazování map přes AMapy API. V PHP nikdy předtím nepsal, ale to ničemu nevadilo, stačil google a trocha nadšení. Dávám ho volně ke stažení jako opensource a doufam, že se na něj nějaký PHPčkář podívá a trochu “vyčistí”;) Ve zbytku článku stručně představím, co to umí a jak se to používá.
Co to umí?
Je to první verze, takže si hned vyjasněme, co to umí a co to ještě neumí. Plugin umožňuje vkládat mapy různé velikosti, vkládat do nich libovolný počet značek, ke každé značce definovat označení, nadpis a popis. Pokud je definovaný popis, je možné na značku kliknout, načež se zobrazí se bublina, ve které je uživatelsky definovaný popis. Jako popis je možné vkládat HTML, takže může být formátován, obsahovat externí odkazy a podobně. je možné definovat zoom a přispůsobit tak měřítko rozptylu štítků.
A co to neumí? Nejde například vkládat více map na jednu stránku. Teda ono to jde, ale značky na mapě se nedefinují vzhledem ke konkrétní mapě, takže by na všech mapách bylo totéž. No… to je asi vše, co od takového pluginu očekávám. Dalších vymožeností by se asi dalo najít spoustu, ale v zásadě si vystačím s tím, co to už umí. Nicméně je to otevřený projekt, pokud by někdo chtěl přidat ruku k dílu, bránit se nebudu.
Instalace
Je to normální plugin do WP, takže stačí
- stáhnout AMapy.cz plugin,
- rozbalit do adresáře wp-content/plugins/
- v administraci wordpressu plugin aktivovat.
Abyste mohli API používat, je nutné si nechat vygenerovat klíč k danému webu, na kterém mapy chcete používat.
Po aktivaci pluginu se vám v podmenu pro pluginy zobrazí odkaz “AMapy.cz API”, přes který se dostanete na formulář pro zadání klíče. Zadejte jej, uložte a je můžeme začít.
Použití
Snažil jsem se, aby se to dalo nějak snadno používat, takže takhle:
Do stránky vložíte kód [ amapa]w|h|z[ /amapa] (bez mezer), kde
- w je šířka mapy v pixelech a tento parametr je povinný,
- h je výška mapy v pixelech a je taky povinný,
- z je zoom (měřítko, defaultně je 20000) a je nepovinný.
Jednotlivé značky do mapy pak vkládáte jako uživatelská pole (custom fields pro vlastníky nelokalizované verze) ke článku v tomto formátu:
klíč je pro každý bod amapy_point.
hodnota je opět několik parametrů oddělených rourou “|”. Parametry jsou následující (význam je dán pořadím):
- GPS Latitude - zeměpisná šířka (např.: 49°11′49.169″N),
- GPS Longitude - zeměpisná délka (např.: 16°36′44.631″E),
- značka - krátký řetězec, kterým bude značka popsána (např.: D),
- název místa (např.: Desert),
- popis - cokoli ve formátu HTML, může být i na více řádků.
Hodnota pak vypadá například
49°11'49.169"N|16°36'44.631"E|D|Klub Desert| Klub Desert najdete na Roosveltově ulici 11 v Brně, naproti krajského soudu.
Povinné jsou první tři parametry. Ještě jsem objevil jednu chybu: Pokud zadáte GPS souřadnice, tak mi wordpress “oescapuje” uvozovky a apostrofy, což neni dobře, protože to řeším už v pluginu. Tak stačí po uložení hodnoty zkontrolovat a odstranit zpětná lomítka ze souřadnic. Pak vše funguje správně.
Ukázka použití
Licence
Uvolňuji to pod MIT licencí, která říká v podstatě to, že si s tím můžete dělat, co chcete, ale že mi nemáte chodit brečet na rameno, když vám to nebude fungovat nebo to dokonce pokazí i další věci (nebojte, nejspíš vám to nic nepokazí;). Přesněji si to přečtěte přímo v the MIT licence.
Plugin je sice zadarmo, ale jestli máte účet na PayPalu, můžete mě klidně pozvat na pivo ;)
Dobrá věc, zrovna tohle jsem hledal cca 15 dní zpátky. Super.
Skvělé… zrovna se mi to velmi hodí… Díky!
Paráda, jen se popis “Klub Desert najdete na Roosveltově ulici 11 v Brně, naproti krajského soudu.” zobrazuje v bílé barvě na bílém pozadí, takže nečitelně. Nějaká rada?
Luboš: Aha, mně se to zobrazuje černým písmem. Podívám se, jestli to půjde nějak nastavit.