Drupal a mapy: nový a jednoduchý způsob implementace
Když jsem si o víkendu stavěl nový web, chtěl jsem sáhnout po osvědčené dvojici modulů Gmap a Location. Ale ouha, na stránce Gmap je zmínka o tom, že existuje jen ze setrvačnosti. Sáhl jsem tedy po doporučených alternativách a rozhodně nelituji.
Reklama
Na Drupalu 6 jsem postavil řadu webů, které obsahují propojení na Mapy Google, a to jak přímo u jednotlivých uzlů, tak ve formě View zobrazujícího na mapě místa odpovídající vybraným uzlům. Asi nejznámější z těchto webů jsou www.fototipy.cz. Několik webů s podporou map jsem postavil i na Drupalu 7.
Vždycky jsem používal kombinaci modulu Location pro zápis adresy a modulu Gmap pro propojení na mapy od Google. Až na výjimky to bylo spolehlivé řešení, byť třeba existence samostatného formulářového pole pro adresu a téhož ve formě klasického doplňkového políčka v Drupalu 7 mě neuvěřitelně mátla a vytáčela. Navíc konfigurace tohoto řešení nebyla zrovna nejrychlejší. Bylo třeba nastavit propojení na Google, zpracování adres do podoby souřadnic a mnoho dalšího.
Gmap pro Drupal 7 je navíc stále označen jako vývojová verze, přestože je možné jej vcelku bez problémů používat. Když jsem o víkendu připravoval nový web Webkamery Chorvatsko.cz, tak jsem si na stránce Gmap všiml zmínky o tom, že tento modul je „legacy". Pro stavbu nového webu tedy signál, že by se mělo uvažovat o novém řešení. Hned jsem proto vyzkoušel doporučované moduly a v tomto článku vám ukážu, jak s nimi pracovat.
Drupal a Mapy Google
Předpokládejme následující zadání: připravujete web, kde uzly vybraného typu budou mít políčko na vložení adresy. Při zobrazení uzlu chcete tuto adresu zobrazit ve formě malé mapky. Někde jinde na webu byste pak chtěli umístit mapu se seznamem všech adres, které jsou na webu vloženy. Web samozřejmě poběží na Drupalu 7.
Takové univerzální zadání lze aplikovat třeba na oba weby, které jsem odkázal výše, stejně jako na různé katalogy, články o cestování a podobně. Co tedy budete potřebovat za moduly?
- Address Field - modul poskytující nový typ políčka sloužícího pro standardní zápis adresy
- Geofield - políčko pro vkládání souřadnic, vbalíčku najdete i modul Geofield Map zobrazující souřadnice na mapě, zapněte jej též
- Geocoder - speciální modul umožňující automaticky překódovat adresu na souřadnice
- geoPHP - podpůrný modul pro práci sgeo souřadnicemi
- Views + Chaos tool suite - klasická kombinace pro výpis filtrovaných dat vDrupalu 7
Na první pohled se může zdát, že zde máme více modulů než v případě kombinace Gmap + Location. Ovšem ty byly také rozděleny na několik submodulů, takže ve výsledku je to stejné, ne-li nepřehlednější. Navíc ta nová koncepce mi přijde i vzhledem k názvům modulů přímočařejší a otevřenější pro další zpracování.
Vkládání adres do Drupalu
Po instalaci a zapnutí zmíněných modulů pokračujte tím, že vytvoříte nový typ obsahu, nazvěme jej třeba Výlet. Přidejte do něj následující políčka:
- Adresa - typ políčka Postal address, widget Dynamic Address Form. V nastavení můžete upřesnit, že jediná dostupná bude Česká republika, zatrhněte ukrytí dalších zemí, Českou republiku nastavte do výchozí hodnot a nastavení uložte.
- Souřadnice - typ políčka Geofield, widget Geocode from another field. V upřesňujícím nastavení zvolte, že chcete souřadnice vypočítat z políčka Adresa, a to pomocí Google Geocoderu (nebo zkuste i jiné). Další nastavení není třeba v tuto chvíli měnit.
Tím jste hotovi a můžete nastavit zobrazení. U typu obsahu Výlet se tedy přepněte na položku Správa zobrazení a přidejte si zobrazení Celého obsahu. Pak se na něj přepněte a pro políčko Souřadnice nastavte, že jej chcete zobrazit jako Geofield Map. Po stisku ozubeného kolečka pak můžete upravit vzhled mapy.
Zobrazení uzlů na mapě
Přidejte nyní několik záznamů pomocí typu obsahu Výlet a podívejte se, zda u nich zobrazení adresy na mapě funguje. Pokud jste postupovali podle návodu, mělo by být všechno bez problémů. Všimněte si, že pole Souřadnice v editaci výletu nikde nefiguruje. Díky modulu Geocoder je skryté a samo se naplní souřadnicemi dle zadané adresy.
Pokud vám nevyhovuje výchozí zoom mapy, vraťte se do Správy zobrazení a upravte nastavení políčka Souřadnice.
K dokončení našeho pomyslného úkolu zbývá poslední část, a sice vytvoření pohledu pomocí modulu Views, který by zobrazoval na jedné mapě všechna místa zadaných výletů. Přes Struktura > Views > Add new View přidejte nový pohled založený na obsahu typu Výlet a jako formát zobrazení (Display format) mu zadejte Geofield Map. Políčko pro nastavení počtu záznamů nechejte prázdné, protože na mapě chceme zobrazit úplně vše.
V upřesňující definici View pak přidejte políčko Souřadnice. Poté klepněte na odkaz Nastavení vedle Geofield Map a sdělte pohledu, že jako zdroj dat bude soužit políčko Souřadnice a jako Popup text políčko Title (tedy název výletu). Ve zbylém upřesňujícím nastavení tohoto dialogu zase upřesněte zoom mapy a její další vlastnosti. Po uložení byste už v náhledu měli vidět budoucí výsledek.
Uložte tedy celé View a podívejte se na adresu, kterou jste ve View definovali pro zobrazení mapy. Pokud jste místo stránky definovali blok, tak jej umístěte do nějakého regionu a podívejte se na jeho zobrazení. Výsledek by měl vypadat nějak takto:
Jako doplňkové cvičení si můžete zkusit upravit obsah bubliny zobrazované po kliknutí na špendlík v mapě. Vraťte se do editace View s mapou, přidejte políčka, která chcete v bublině na mapě zobrazit (třeba obrázek, adresu, popisek, cokoli jiného) a nakonec políčko Global: Vlastní text. Do něj můžete vložit libovolný HTML obsah a také nahrazovací vzorky, které tam umístí obsah před chvílí přidaných políček. V nastavení Geofield Map pak určete, že v bublině nechcete zobrazovat nadpis (Title), ale právě políčko Global: Vlastní text (objeví se jako nothing). View uložte a vyzkoušejte.
Podobné články
- 1 z 31
- následující ›
Volná místa v IT
- Quality assurance engineer (40 - 60.000,- Kč) (Advantage Consulting, s.r.o.)
- Vývojář pro android (30 – 55.000,- Kč) (Advantage Consulting, s.r.o.)
- Managed Services Consultant with French based in lovely Prague! (Teradata Česká republika, spol. s r. o.)
- PHP Programátor/Praha/Spa (Ref. č.: 22619/PHPP/SPA) (Kariéra spol. s r.o.)
- Správce serveru (Advantage Consulting, s.r.o.)



























Komentáře
Díky
HiPPoCZ 7.8.2012 12:13:17 (#8774)Díky za super článek, přesně jste se trefil do toho, co budu v brzké době potřebovat.
Ještě mám dotaz, dá se nějak pořešit, aby se zadání adresy dalo vybrat a zadat buď pomocí adresy nebo pomocí GPS souřadnic, abych mohl zadávat i místa, které nemají adresu?
Ruční výběr souřadnic
Jan Polzer (www.polzer.cz/) 7.8.2012 12:45:09 (#8776)Ve spojení s modulem OpenLayers a buď poslední dev verzí Geofield nebo patchem odtud http://drupal.org/node/1627940 by to mělo jít. Ale ještě jsem nezkoušel. Pokud se k tomu dostanete dříve než já, budu rád za info.
Majitel Maxiorla. Nabízím mimo jiné placené poradenství pro Drupal. Jsem i na Twitteru.
Ruční výběr souřadnic
HiPPoCZ 7.8.2012 13:27:11 (#8777)Díky za doplnění. Vzykouším snad do konce týdne a určitě dám výsledek vědět.
Chybové hlášky
HiPPoCZ 26.8.2012 21:28:08 (#8808)Tak jsem se konečně dostal k tomu abych to všechno zkusil a zatím se mi nepodařilo rozchodit ani mapy. Zobrazuje se mi chyba: Fatal error: Class 'geoPHP' not found in /data/web/virtuals/16247/virtual/www/sites/all/modules/geophp/geophp.module on line 54
Zkoušel jsem moduly odistalovat, a znovu naistalovat, ale bez úspěchu :(
Chybové hlášky
HiPPoCZ 26.8.2012 21:28:09 (#8809)Tak jsem se konečně dostal k tomu abych to všechno zkusil a zatím se mi nepodařilo rozchodit ani mapy. Zobrazuje se mi chyba: Fatal error: Class 'geoPHP' not found in /data/web/virtuals/16247/virtual/www/sites/all/modules/geophp/geophp.module on line 54
Zkoušel jsem moduly odistalovat, a znovu naistalovat, ale bez úspěchu :(
Chyba 2
HiPPoCZ 26.8.2012 21:30:37 (#8810)Případně se zobrazí chyba: Fatal error: Class 'Point' not found in /data/web/virtuals/16247/virtual/www/sites/all/modules/geocoder/plugins/geocoder_handler/google.inc on line 67, navíc se chyby zobrazují náhodně, v různých částech webu i tam kde se s moduly vůbec nepracuje :(
Chyba 2
HiPPoCZ 26.8.2012 21:30:40 (#8811)Případně se zobrazí chyba: Fatal error: Class 'Point' not found in /data/web/virtuals/16247/virtual/www/sites/all/modules/geocoder/plugins/geocoder_handler/google.inc on line 67, navíc se chyby zobrazují náhodně, v různých částech webu i tam kde se s moduly vůbec nepracuje :(
GeoPHP
Jan Polzer (www.polzer.cz/) 27.8.2012 16:07:59 (#8817)Takový dotaz - máte tam to GeoPHP dokopírované?
Majitel Maxiorla. Nabízím mimo jiné placené poradenství pro Drupal. Jsem i na Twitteru.
GeoPHP
HiPPoCZ 28.8.2012 19:13:02 (#8821)Ano mám, zkoušel jsem knihovnu i vymazat a znovu nahrát, pořád to samé.
Geophp
Vít straka (neověřeno) 29.8.2012 15:26:15 (#8830)Tak se s tím peru již půl dne a nedaří se mně to rozchodit. Usoudil jsem, že je problém v geoPHP, protože jakmile nainstaluji tento podpůrný modul (knihovnu) a spustím update.php, tak to hodí:Fatal error: Class 'geoPHP' not found in /data/web/virtuals/26818/virtual/www/sites/all/modules/geophp/geophp.module on line 54
Jakmile ho odinstaluju tak update.php normálně jde.
Jinak když udělám přesně vše podle vašeho návodu chová se to úplně stejně jak popsal kolega výše.
Tak aktuální diskuze k
Vít straka (neověřeno) 29.8.2012 15:55:23 (#8831)Tak aktuální diskuze k problému je zde:
http://drupal.org/node/1759520 Asi to dělá nová verze modulu
Aktuální verze
HiPPoCZ 30.8.2012 19:04:41 (#8837)Zkoušel jsem jak aktuální, tak dev, bohužel to asi bude opravdu chyba modulu, protože se mi s tím hnout nepovedlo.
Zkusím vyčkat na další verzi dev verze.
geoPHP
Vít straka (neověřeno) 1.9.2012 20:25:45 (#8847)Jestli Vám to pořád nefunguje, tab by to chtělo napsat do fóra na drupal.org, viz adresu co jsem vkládal výše, aby to někdo řešil.
A co máte za hosting? Já wedos, ještě mě napadá jestli to nemůže být zas nějaké nastavení např v htacces souboru
Re: aktuální verze
Jan Polzer (www.polzer.cz/) 1.9.2012 20:50:34 (#8849)Zde je odkaz na funkční verzi, kterou používám ve spojení s hostingem na HostGatoru. Stačí rozbalit do rootu webu.
Majitel Maxiorla. Nabízím mimo jiné placené poradenství pro Drupal. Jsem i na Twitteru.
GeoPHP
Vít straka (neověřeno) 2.9.2012 09:12:36 (#8850)Díky, ale pořád je to to stejné. Po nainstalování geoPHP mně to hází v různých sekcích webu: Fatal error: Class 'geoPHP' not found in /data/web/virtuals/26818/virtual/www/sites/all/modules/geophp/geophp.module on line 54
Takže je problém někde jinde, buď se to hádá s jiným modulem, nebo v hostingu, nebo nevím :-)
Já tedy zůstanu u gmap + location, ikdyž toto řešení by bylo asi lepší
GeoPHP + hosting
HiPPoCZ 2.9.2012 12:20:31 (#8851)Ano taky používám Wedos, takže by mohl být problém v nastavení hostingu ...
Wedos
Vít straka (neověřeno) 2.9.2012 12:42:10 (#8852)Hm tak to by mohlo být ono nic jiného mě nenapadá, než že to bude v nastavení Wedosu. Každopádně gmap+location funguje, takže jak sem psal výše zůstanu u toho.
Mapy a WEDOS
HiPPoCZ 27.11.2012 10:37:43 (#9067)Dobrý den všem :)
Nepřišel už někdo z vás na to, jak toto všechno rozchodit pod Drupalem hostovaném na WEDOSu?
Re: Mapy a WEDOS
Jan Polzer (www.polzer.cz/) 14.1.2013 13:36:06 (#9172)Dle nejnovější zkušenosti (dnešek) již vše funguje zřejmě dobře, viz www.brnomasaze.cz. Konfigurace: tarif noLimit Extra, neomezené aliasy, geocoder 7.x-1.2, Geofield Map 7.x-2.0-alpha2+2-dev, geophp 7.x-1.7, OpenLayers 7.x-2.0-beta3, Address Field 7.x-1.0-beta3, Geofield 7.x-2.0-alpha2+2-dev.
Majitel Maxiorla. Nabízím mimo jiné placené poradenství pro Drupal. Jsem i na Twitteru.
Chyba
Vít straka (neověřeno) 29.8.2012 13:24:52 (#8829)Mám úplně stejný problém. Vyřešil jste ho nějak?
A šlo by nějak řešit aby se
Jum (neověřeno) 29.8.2012 13:19:46 (#8828)A šlo by nějak řešit aby se pole souřadnic načetlo z adresy a jen když není adresa šlo vybrat přes výběr bodu?
Výběr bodu pokud není adresa
HiPPoCZ 30.8.2012 19:01:12 (#8836)Přesně tak jsem to měl na mysli, aby se dalo zadat jedno nebo druhé. Bohužel nemohu nic vyzkoušet, protože nemohu moduly rozchodit :(
Nefunkční mapy
Jan Polzer (www.polzer.cz/) 30.8.2012 21:06:13 (#8841)Přátelé, trochu se v tom ztrácím. Nejde vám rozchodit to, co popisuju v článku? Vzhledem k tomu že mi to šlape bez problémů, mohu dát někam do ZIPu zabalené verze modulů a knihovny, se kterými mi to funguje.
Majitel Maxiorla. Nabízím mimo jiné placené poradenství pro Drupal. Jsem i na Twitteru.
Moduly
Vít straka (neověřeno) 31.8.2012 10:49:21 (#8845)Pokud by to šlo někam uploudnout tak bych to vyzkoušel. Já to nemůžu rozchodit a vyzkoušel jsem už hodně možností. Dokonce jsem si psal s tvůrcem modulu a předchozí verze geoPHP 1,5 obsahovala bugy tak včera byla vypuštěna nová verze 1,6 ale ta zas hází jiné chyby :-)
To co ukazujete ve článku
Jum (neověřeno) 2.9.2012 13:43:28 (#8853)To co ukazujete ve článku jsem rozběhal. Podařilo se mi rozběhat i zjištění souřadnic přes spojení modulu OpenLayers a poslední dev verze Geofield.Uživatelsky to teda moc přívětivé nebylo a zkouším ještě hledat jiné řešení. To co mě však nadále nejvíc trápí je jak řešit aby se pole souřadnic načetlo z adresy a jen když není adresa šlo vybrat přes výběr bod.
Tak už jsem to rozchodil.
Roland Korbuth (neověřeno) 9.9.2012 09:53:04 (#8873)Tak už jsem to rozchodil. Ještě mi chybí taková drobnost. Ty značky na mapě - tuším "markers". Nemáte někde odkaz, na návod jak je změnit(vybrat jiný obrázek)? Nejlépe třeba v závislosti na taxonomy. Projel jsem Drupal.org a nic. Předem děkuji za tip.
vkládání pozice na mapu
vomi (www.vendyatelier.cz) 5.2.2013 20:49:30 (#9221)řešil jsem pro jednu cestovku při vkládání jednotlivých článků jak to jednoduše propojit na google mapy - stejný námět jako je tento článek. Vyřešil jsem to modulem http://drupal.org/project/simple_gmap . Přidal jsem si jedno jediné pole při vydávání článku kde si zákazník napíše stejný text jako když hledá na gmapách - ulice-číslo pop. - čárka - město - čárka - stát. Jenže zákazník chtěl zadávat mapu podle GPS. Nastavil jsem vše dle popisu tady a začal zápasit s nadstavbou na GPS. Vše je moc složité. Po x hodinách jsem zjistil že starý modul umí vygenerovat mapu nejen když tam vložím adresu. Na google mapách si najdu to místečko co chci co nemá ulici a č.p., a na to místo položím kurzor myši. Pravou klávesou myši se zeptám na otázku "Co je tady?" a google mi do adresního řádku hodí GPS souřadnice mé zahrady, konkrétně hrušky co mám na zahradě. V poli článku místo adresy hodím tyto GPS čísla. K článku se mi hodí mapa a v tomto případě místo zelené bubliny zelená šipka. Velmi jednoduché, multifunkční (jak adresa tak GPS) a pro vysvětlení pro zákazníka jednoduché ;))))
Simple Google Maps
Jan Polzer (www.polzer.cz/) 6.2.2013 07:56:31 (#9224)Podporuje modul Simple Google Maps také Views?
Majitel Maxiorla. Nabízím mimo jiné placené poradenství pro Drupal. Jsem i na Twitteru.
to nevím, to je pro mne krok dvě.....
vomi (www.vendyatelier.cz) 6.2.2013 10:09:17 (#9226)Tak daleko jsem se nedostal. Když si vytvořím nové Views to nové pole vidím, lze s ním pracovat a měnit parametry, přidávat k tomu další pole jako hlavní obrázek atd.... ale nevím zda to lze tak excelentně propojit aby se všechny zobrazené body vložily na jednu mapu..... Mně hlavně se líbí ta multifunkčnost na adresu nebo GPS a jednoduchost vkládání pro zákazníka
Díky za typ, funguje
Milan Starý (neověřeno) 20.2.2013 21:13:07 (#9307)Je to jednoduché a asi už nic jednoduššího neexistuje. Milan
Marks
David (neověřeno) 21.3.2013 13:11:52 (#9416)Nevíte, jestli náhodou do mapy nejdou přidávat i vlastní značky. Nějak jsem to v tomto modulu nenašel. Děkuji D.
Re: Marks
Jan Polzer (www.polzer.cz/) 21.3.2013 15:20:55 (#9417)Jde to, ale myslím, že jsem to na webu, kde jsem to použil, řešil nějak pomocí kódu.
Majitel Maxiorla. Nabízím mimo jiné placené poradenství pro Drupal. Jsem i na Twitteru.
Obsah bubliny bez použití view.
Michaell (neověřeno) 26.4.2013 20:45:56 (#9557)Schopnost předávat jednotlivé body do společné mapy pomocí views je báječná věc. Co mě ale mrzí je, že nelze změnit obsah bubliny u výchozí mapy. Alespoň jsem na to nenašel žádný nástroj. Jistě i změna špendlíku by potěšila. Ovšem vystačit si jen s názvem článku v bublině je mrzuté. Druhou potíž (ktero se mi nedaří vyřešit) je, že když přidám více bodů na mapu v rámci jednoho uzlu (nastavení na neomezený počet) tak se mi s každou editací uzlu cnutí nový bod na mapě. tedy pokud jak je v návodu uvedeno napočátku zvolím jako primární nějakou zemi. A pokud ji nedej bože dám skrýt budou se mi přidávat body automaticky při každé editaci uzlu.
Uživatelsky nepříjemné ALE ne nepřekonatelné :o) Víc mi schází "marmeláda" do bublin.
Měl by někdo nějaké řešení? .. je někdo dál?
Děkuji M.