1.9.1 Vykreslení mapové kompozice připravené v předchozím cvičení

K testování správné instalace využijeme existující mapovou kompozici prvni.map. Prozatím do ní nebudeme zasahovat a pouze se pokusíme o její vykreslení, ale tentokrát již s využitím PHP modulu.

Úvod

Vytvoříme soubor prvni.php, který naplníme následujícím kódem, který se postará o vykreslení kompozice prvni.map.

<HTML>
<BODY>
<H1>Cvičení s PHP/MapScript</H1>
<?
  //přimapování DLL knihovny
  //dl("C:\temp\php_mapscript.dll ");
  $mapfile = "prvni.map";    //název souboru mapové kompozice
  $mapa = ms_newMapObj($mapfile); //vytvoření objektu MapObj
  $img = $mapa->draw();  //získání objektu typu Image
  //uložení obrázku do souboru a získání jeho URL adresy
  $url = $img->saveWebImage(MS_PNG, 1, 1, 0);
?>
<INPUT TYPE="IMAGE" NAME="mapa2" SRC=<? echo $url; ?> WIDTH=600 HEIGHT=400 BORDER=1>
</BODY>
</HTML>

Řádek //dl("C:\temp\php_mapscript.dll"); //přimapování DLL knihovny není interpretován a byl by použit pouze v případě, že bychom nemohli knihovnu umísit do adresáře C:\PHP\extensions.

Řádek $mapa = ms_newMapObj($mapfile) využívá konstruktoru ms_newMapObj (string mapfile) k získání objektu mapa. Všechny konstruktory tříd v PHP modulu začínají znaky ms_

Objekt mapa nabízí mnoho metod (s některými se seznámíme dále). V tomto případě se na dalším řádku využívá metoda draw. Tato metoda provede vykreslení obsahu mapového pole v paměti počítače (resp. vytvoří objekt img).

Objekt img se v posledním kroku zapíše na disk do adresáře definovaného v souboru prvni.map pomocí metody saveWebImage. Tato metoda má čtyři parametry. První je typ souboru (MS_JPEG, MS_GIF, MS_PNG, MS_WBMP), druhý udává průhlednost (0/1), třetí prokládání (0/1) a čtvrtý kvalitu (0 – 95).

První skript

Soubor prvni.php umístíme do stejného adresáře jako soubor prvni.map. Spustíme přes WWW prohlížeč adresou http://127.0.0.1/ms/prvni.php. Výstup ze skriptu by měl vypadat obdobně jako na následujícím obrázku.

Testování

Obrázek 1-33: Výstup z prvni.php.

Pokud jste neobdrželi uvedený výstup, podívejte se do průvodce studiem. Pokud ani tam nenajdete řešení vašeho problému postupujte podle pokynů uvedených v úvodu modulu.

Výstup z prvni.php

 

PRŮVODCE STUDIEM 14

 

V případě problémů s kopírováním (přepisováním) kódu souboru jej naleznete na CD v adresáři ms/ pod názvem prvni_v1.php.

Zdroj na CD

 

Přestože máte kód v pořádku může dojít k několika chybovým hlášením. Dále jsou uvedeny dvě nejpravděpodobnější:

Chyby

 

Fatal error: Call to undefined function: ms_newmapobj() in c:\program files\apache group\apache\htdocs\ms\prvni.php on line 7

Tato chyba ukazuje na špatnou instalaci DLL knihovny. V některých případech prosté zkopírování knihovny nestačí a je nutné provést několik dalších operací:

· Zkopírovat C:\PHP\php.ini-dist do C:\Winnt\php.ini (C:\Windows\php.ini)

· Editovat soubor C:\Winnt\php.ini

- Do sekce Dynamic Extensions doplnit řádek extension=php_mapscript_36.dll

- V sekci Paths and Directories změnit řádek extension_dir = ./ na
extension_dir = extensions

Správně nakonfigurovaný soubor php.ini najdete na CD v adresáři php pod názvem php.ini

Chyba - Call to undefined function

 

Na dalším obrázku jsou znázorněny další dvě možné chyby (varování), které jsou následovány stejnou chybou jako v předchozím případě.

Obrázek 1-34: Varování – Unable to load dynamic library.

V obou případech je problém se samotnou knihovnou (ne s instalací). Buď je soubor poškozen nebo používáte jinou verzi PHP než distribuovanou na doprovodném CD ke kurzu. Zkuste soubor php_mapscript_36.dll zkopírovat ještě jednou, případně ověřit verzi PHP.

Varování – Unable to load dynamic library