Autor Zpráva
Nailen
Profil
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<?

print("<h2>Poloha vygenerovaná v php<\h2>");
$test1 = 1111111;
$test2 = 2222222;

?>

<head>
    <title>Jednoduchá mapa | AMapy API</title>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <script type="text/javascript" src="http://amapy.atlas.cz/api/api.ashx?guid=VAS_GUID"></script> 
    <script type="text/javascript">    
    
    var Page = {
        load: function() {
            var mainMap = new AMap("mainMap");
            mainMap.loadMaps(); 
            mainMap.addMapPart(new ASmallMapControl());                            
            mainMap.addMapPart(new AMapTypeControl());                                          
            
            // vytvořim pozici
            var praguePlace = new AGeoPoint(3460690,5551757, ACoordinateSystem.S42);
            // vytvořim značku
            var prague = new AMarker(praguePlace);        
            // přidám značku do mapy
            mainMap.addOverlay(prague);            
        }
    }
    window.addEvent('domready', Page.load.bind(Page));

    
       
    </script>
    <style type="text/css">
        body        { font: 13px Verdana, 'Geneva CE', lucida, sans-serif }
    </style>
</head>

<body>
    <div id="mainMap" style="width: 500px; height: 300px;">
    </div>
</body>

</html>


měl bych dotaz. Neovládám javascripty a proto tento můj stupidní dotaz. Než jsem tento příspěvek napsal tak jsem pátral, ale nic mi nefungovalo.

v php mám dvě proměnné $test1 a $test2 vi výše. Do těchto proměnných si vygeneruji nějaká čísla a ta bych chtěl dostat místo čísel 3460690 a 5551757, které jsou v javascriptu. Poradí mi někdo jak tento kód upravit?

Předem děkuji za jakoukoli odpověď.

Nailen
Joker
Profil
Nailen
Hodnota PHP proměnné se prostě vloží do Javascriptu jako JS proměnná:
<script type="text/javascript">
var neco = <?php echo($test1); ?>;
var necojineho = <?php echo($test2); ?>;
alert(neco);
</script>
Nailen
Profil
Joker

Super, jak jednoduché. Děkuji
Nailen
Profil
měl bych další dotaz ohledně scriptu viz výše.

Na atlas API jsem se dočetl, že mohu použít i tento kód, kde jsou zadané GPS souřadnice:

var stred = new AGeoPoint("50°40'43.07\"N; 14°13'3.23\"E");
        mainMap.loadMaps(stred, 2000000, 'Základní');


Pokud to přesně takto vložím do kódu, tak se mi nic nezobrazí. Pokud to upravím podle kódu co jsem našel na jiných stránkách viz. níže tak to funguje. Poradí mi někdo čím to je? Jestli mám nějak změnit někde znakovou sadu, ...

var stred = new AGeoPoint("50°40'43.07\"N; 14°13'3.23\"E");
 mainMap.loadMaps(stred, 2000000, 'Základní');
_es
Profil
Nailen
Nie je to znakovou sadou, ale kódovaním.
Odoslané reťazce asi majú byť v UTF-8.
Druhý kód vznikne, ak sa text prvého v UTF-8 zobrazí v kódovaní Windows-1250.
Teda ak je kódovanie scriptu v UTF-8, tak sa (asi) dá písať priamo ako prvý kód.
No ak je kódovanie scriptu vo Windows-1250, tak ho (asi) treba napísať ako druhý kód.
Chamurappi
Profil
Reaguji na _es:
Kódování skriptu by nemělo hrát roli, řetězce si nepamatují, v jakém kódování byly zapsané, ukládají se v paměti vždy v Unicodu. Jsou-li AMapy napsané alespoň trochu rozumně, nebude mít kódování stránky vliv.

Reaguji na Nailen:
Tipnul bych si, že máš celou stránku uloženou ve špatném kódování. Tedy, že deklaruješ „UTF-8“, ale ve skutečnosti užíváš „windows-1250“.
_es
Profil
Chamurappi
Myslel som reťazce ako Byty odosielané z JavaScriptu, tam to môže závisieť od kódovania.
No asi to bude tak ako tvrdíš, že to je ošetrené a nezávislé od kódovania a len je kódovanie zle deklarované.
Nailen
Profil
Reaguji na _es:

měl jsi pravdu, opravdu jsem v PSPadu měl zapnuté "windows-1250". :-(


Měl bych ale ještě jeden dotaz. Už jsem se dozvěděl jak ve scriptu nahradit číslo 3460690 a 5551757 jinou proměnou z PHP. Nějak mě to ale nefunguje na ty GPS souřadnice. Nejspíš tam budu mít nějakou chybu v syntax.

<?php
$test1 = ...;
?>

<script ....
  var neco = <?php echo($test1); ?>;

  var stred = new AGeoPoint("49°12'23.850\"N; 16°40'30.040\"E");

...script>


Jak mám použít proměnou neco v AGeoPoint? Jak má být proměnná $test1 nafomátovaná, aby si to java přechroustala?
_es
Profil
<?php
$test1 = 'reťazec';
?>
<script>
  var neco = '<?php echo $test1; ?>';
...

Ináč Java a JavaScript majú spoločné asi toľko ako Java a Jawa.
Nailen
Profil
Tohle je mi celkem jasné, ale nevím jak to pak vložit do toho scriptu viz úplně nahoře.

var stred = new AGeoPoint("49°12'23.850\"N; 16°40'30.040\"E");


kde tady má být to "neco" ???

je tam na mě moc uvozovek, apostrofů a lomítek a středník, že se v tom ztrácím. Jak přesně má vypadat pro tento konkrétní příklad proměnná $test1 a jak přesně má vypadat proměnná stred?

Předem děkuji za Vaši snahu mi to vysvětlit.
_es
Profil
<?php
$test1 = '49°12\'23.850"N; 16°40\'30.040"E';
?>
<script>
  var neco = '<?php echo $test1; ?>';
  var stred = new AGeoPoint(neco);
...
Nailen
Profil
Děkuji :-)

proměnnou test1 jedna jsem musel ještě trošku upravit:

 $test1 = '49°12\'23.850\"N; 16°40\'30.040\"E';


moje chyba byla ale jinde.

přehlédle jsem již výše napsané apostrofy

moje verze:
var neco = <?php echo($test1); ?>;


vaše verze:
var neco = '<?php echo $test1; ?>'
_es
Profil
Správne má byť:
$test1 = '49°12\\\'23.850"N; 16°40\\\'30.040"E';

Pred " je \ zbytočné.
Nailen
Profil
normálně to asi zbytečné je, ale bez něj to nešlo. asi aAtlas API to tam vyžaduje

var ev_Place = new AGeoPoint("50°40'43.07\"N; 14°3'3.23\"E");
Měsíček
Profil
"normálně to asi zbytečné je, ale bez něj to nešlo. asi aAtlas API to tam vyžaduje "

Ne. Začni apostrofy jako _es a nemusíš oescapovat uvozovky.
Měsíček
Profil
Mimochodem rozdíl mezi echo a echo() je prakticky nulový.
_es
Profil
Měsíček
Mimochodem rozdíl mezi echo a echo() je prakticky nulový.

Echo nie je funkcia, ale priamo súčasť syntaxe, preto je echo $x, echo($x), echo ($x) a dokonca aj echo$x to isté.
Nailen
Profil
když tak ovládáte syntaxy tak mi určitě poradíte i s tímto :-)

jak už jsem několikrát psal API od atlasu očekává přímo tento řetězec:

var poloha = "49°12'23.850\"N; 16°40'30.040\"E";


já mám souřadnice rozsekané v jednotlivých proměnných (šest složek). Jak je mám pospojovat do jednoho řetězce abych dostal přesně to co očekává API?

nyní mám řetězec:

$gps1 =  $carr["gps_n1"] . "°" . $carr["gps_n2"] . "'" . $carr["gps_n3"] . "\"N; " . $carr["gps_e1"] . "°" . $carr["gps_e2"] . "'" . $carr["gps_e3"] . "\"E";


a ten mi vytvoří toto:

49°12'9.000"N; 16°36'24.290"E


na první pohled je vidět že tam ty zpětná lomítka nejsou a API to nevezme a mapu mi nezobrazí :-(

jak tam to lomítko přes tečky, apostrofy, uvozovky... dostat?

opět předem děkuji
_es
Profil
Nailen
Treba mať jasno v tom, aká premenná je v PHP a aká premenná je v JavaScripte.
Podstatný je reťazec predaný do nejakej funkcie API JavaScriptu AMapy.
var poloha = "49°12'23.850\"N; 16°40'30.040\"E";
V poloha je presne tento reťazec: 49°12'23.850"N; 16°40'30.040"E
Tento je možné zadefinovať ako predtým, alebo ako: var poloha = '49°12\'23.850"N; 16°40\'30.040"E';
\ je potrebné buď pred " alebo pred ', podľa toho, v čom je reťazec uzavretý.
Na server AMapy nie je odosielané žiadne \.
V PHP sa premenná definuje podobne, no tam nemusí byť celkom jedno, či sa použije " alebo ', lebo pri " je zložitejšia analýza reťazca.
Preto si buď pozri, ako je analyzovaný reťazec pri ", alebo použi '.
Správny reťazec som ti už napísal predtým (ten posledný), to predtým nebolo úplne správne.
V PHP '\\' znamená reťazec \ a '\'' znamená '
Měsíček
Profil
Reaguji na _ese:

"Echo nie je funkcia, ale priamo súčasť syntaxe, preto je echo $x, echo($x), echo ($x) a dokonca aj echo$x to isté."

Vypadá to snad, že to nevím? :)
Nailen
Profil
'\\'
tohle je přesně to co jsem potřeboval. Děkuji.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: