Autor Zpráva
morek
Profil *
Zdravim,
mam jeden zadrhel se kterym si nevim rady (google a vysvetleni globalni vs. lokalni prom. v JS jsem zkousel).

Na zacatku skriptu jsem si nadefinoval dve glob. promenne>

var myLatitude;
var myLongtitude;
		 

Pak mam nekolik fci z nich ta treti by mela aktualizovat hodnoty dvou globalnich promennych, tak aby jejich hodnoty byli pristupne v jakekolliv fci ve skriptu>

Problem je s tim, ze to nefunguje, netusi nekdo v cem by mohl byt problem prosim?

Diky za kazdou radu.

            // GPS COORDS
            //
            function onLoad(){
                document.addEventListener("deviceready", onDeviceReady, false);
            }
            
            // PhoneGap is ready
            //
            function onDeviceReady(){
                navigator.geolocation.getCurrentPosition(onSuccess, onError);
            }
            
            // onSuccess Geolocation
            //
            function onSuccess(position){
            
                
				//var myPositionArray = new Array(2);
				var myLatitude = position.coords.latitude;
				var myLongtitude = position.coords.longitude;
				
				
			    
            }
			
__construct
Profil
morek:
google a vysvetleni globalni vs. lokalni prom. v JS jsem zkousel
Asi si zle študoval:
/**
 * Globáne nadefinované premenné
 */
var myLatitude,
    myLongtitude;

function onSuccess(position)
{
    // K prístupu ku globálnej premennej sa var nepoužíva
    myLatitude = position.coords.latitude,
    myLongtitude = position.coords.longitude;  
}
morek
Profil *
To jsem zapomnel napsat, ze toto jsem zkousel take.
__construct
Profil
morek:
To jsem zapomnel napsat, ze toto jsem zkousel take.
Potom bude chyba niekde inde - dodaj sem väčšiu časť kódu, v lepšom prípade živú ukážku.
Píš s diakritikou - lepšie sa to číta.
morek
Profil *
Ukázka je tady:


<!DOCTYPE html>
<html>
    <head>
        <meta charset=utf-8 />
      
        <!-- APP CODE -->
        <script type="text/javascript" charset="utf-8">
        
		var myLatitude;
		var myLongtitude;
		 
			
            // GPS COORDS
            //
            function onLoad(){
                document.addEventListener("deviceready", onDeviceReady, false);
            }
            
            // PhoneGap is ready
            //
            function onDeviceReady(){
                navigator.geolocation.getCurrentPosition(onSuccess, onError);
            }
            
            // onSuccess Geolocation
            //
            function onSuccess(position){
            
                
				//var myPositionArray = new Array(2);
				 myLatitude = position.coords.latitude;
				 myLongtitude = position.coords.longitude;
				
			
			    
            }
			
			
		
            
            // onError Callback receives a PositionError object
            //
            function onError(error){
                alert('code: ' + error.code + '\n' +
                'message: ' +
                error.message +
                '\n');
            }
            
            
            //Get DISTANCE 
            function getDistance(lat1, lon1, lat2, lon2){
                var lat1 = Geo.parseDMS(lat1);
                var lon1 = Geo.parseDMS(lon1);
                var lat2 = Geo.parseDMS(lat2);
                var lon2 = Geo.parseDMS(lon2);
                var p1 = new LatLon(lat1, lon1);
                var p2 = new LatLon(lat2, lon2);
                return (p1.distanceTo(p2));
                
            }
            
            //GET VARIABLE FROM URL
            function getUrlVars(){
                var vars = [], hash;
                var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
                for (var i = 0; i < hashes.length; i++) {
                    hash = hashes[i].split('=');
                    vars.push(hash[0]);
                    vars[hash[0]] = hash[1];
                }
                //alert(vars);
                return vars;
            }
            
            
            
            
        $("#productSearchpage").live("pageshow", function(event, ui){
          
		  
		onLoad();       
		var searchQuery = getUrlVars();
		
		//alert(searchQuery['query']);
		
		jQuery.getScript("http://www.mojeadresa.cz/", function(){             
      	    
	    
		
		//Return to search page if array is empty
		if (mapdata.length==0) {
		alert("Nic nenalezeno");
		window.location.href = "index.html";
		}
		
		//Writeout products if any
		else {
			
			 
			$.each(mapdata, function(index, value){
		
				//alert(index + ': ' + value.jmeno+value.lat+value.lng); 
				//document.write(value.jmeno);  
				
				try {
					
						
					//alert("SUCCESS");
					
					currentShopLatitude = value.lat;
					currentShopLongtitude = value.lng;
					
					
					
					var distance = getDistance(myLatitude, myLongtitude, shopLatitude, shopLongtitude);
					
					alert(distance);
					
					$("ul").append("<li><img width=\"80px\" src=\"http://adresa.cz/" + value.img + "\"/><h3><a href=\"" + value.jmeno + "\">" + value.jmeno + "</a></h3><p>" + value.akcnicena + " KÄŤ</p><p>" + value.pjmeno + "</p><div class=\"shop-distance\">"+distance+"</div><div id=\"lat\">" + value.lat + "</div><div id=\"lng\">" + value.lng + "</div></li>");
				} 
				
				catch (err) {
					alert("ERROR BY WRITEOUT");
				}
			});
			
			
		}
	      $('ul').listview('refresh');
  		});         


			
				
                
                
                
            });
        </script>
    </head>
    <body>
        <div data-role="page" id="productSearchpage">
            <div data-role="header">
                <h1>Nalezené produkty</h1>
            </div>
            <!-- /header -->
            <div class="result">
            </div>
            <div data-role="content">
                <ul data-role="listview">
                </ul>
            </div>
            <!-- /content -->
            <div data-role="footer">
                <h4>Page Footer</h4>
            </div>
            <!-- /header -->
        </div>
        <!-- /page -->
    </body>
</html>
__construct
Profil
morek:
Predpokladám, že chyba bude v tom, že používaš jQuery framework, ale nenačítaš si ho.
Skús si pred 7. riadok doplniť:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
morek
Profil *
Necitam ho, stejne jako vsechny dalsi skripty, jen jsem to tam neuvedl aby nebyl kod zbytecne delsi.

Jde opravdu jen o radky 31 .. 33

myLatitude = position.coords.latitude;
myLongtitude = position.coords.longitude;
morek
Profil *
Netusi tedy nekdo prosim v cem by mohl byt problem? Uz jsem vyzkousel vse mozne ale stale nic co by pomohlo.
_es
Profil
morek:
Netusi tedy nekdo prosim v cem by mohl byt problem?
Skúsil si sa pozrieť, čo je vlastne v premennej position?

Problem je s tim, ze to nefunguje,“ je trochu neúplný popis problému.
Myslíš tým, že to nefunguje, to, že to nefunguje len v niektorých prehliadačoch, čo je dosť pochopiteľné, pretože to podporujú len niektoré prehliadače? Alebo tým myslíš niečo iné?
morek
Profil *
Jde o to, ze hodnotu z radku 31 a 32 nemohu dostat do globalni promenne na radku 1 a 2
tj.
var myLatitude;
var myLongtitude;

To je jediny problem a na radcich 31 a 32 to hodnotu vraci spravnou.
_es
Profil
morek:
V takom kóde sa ťažko orientovať.
Nemáš popletené, kedy sú do tých premenných zapísané hodnoty?
Neskúšaš ich čítať skôr, ako je zavolaná tá funkcia? Vtedy je ich hodnota undefined.

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: