Google map Duration

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
diti
Δημοσιεύσεις: 54
Εγγραφή: 09 Ιαν 2004 17:41
Τοποθεσία: ΘΕΣΣΑΛΟΝΙΚΗ
Επικοινωνία:

Google map Duration

Δημοσίευση από diti » 15 Δεκ 2010 11:23

Για να βρω τη χρονική απόσταση μεταξύ 2 σημείων στο χάρτη (όπου γνωρίζω τις συντεταγμένες του κάθε σημείου ) έχω τον παρακάτω κώδικα:

point[0] = new GLatLng(stlat, stlng);
point[1] = new GLatLng(parseFloat(markers[1].getAttribute("lat")), parseFloat(markers[1].getAttribute("lng")));

directions = new GDirections();
directions.loadFromWaypoints(point);
GEvent.addListener(directions, "load", function()
{
alert(directions.getDuration().seconds/60);
});

Μέχρι εδώ δουλεύει μια χαρά με 2 σημεία.

Αυτό που θέλω να κάνω είναι από ένα σημείο (εδώ αυτό που είναι στο point[0] )
να βρω τι χρονική απόσταση με όλα τα σημεία που έχω στον χάρτη.
Βάζω στο point[1] τις καινούργιες συντεταγμένες και κάνω loop το:
directions = new GDirections();
directions.loadFromWaypoints(point);
GEvent.addListener(directions, "load", function()
{
alert(directions.getDuration().seconds/60);
});


αλλά παρατήρησα ότι δουλεύει ασύγχρονα. Δηλαδή μπορεί να γίνει το load στο τελος με αποτέλεσμα να εμφανίσει τη χρονική απόσταση μόνο του τελευταίου ή αν βάλω alert και καθυστερήσει μου δείχνει τις σωστές αποστάσεις.
Μήπως δεν χρησιμοποιώ σωστά τις εντολές;

Μπορεί κάποιος να βοηθήσει;
Σας ευχαριστώ.

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Google map Duration

Δημοσίευση από fafos » 15 Δεκ 2010 17:07

den katalava ti thes na kaneis.. theleis na emfanizei se ena pinaka ola ta durations metaxy enos kyriou point kai olon ton allon (na ta listarei dhladh) h na kaneis elegxo apo ena point pros ena allo?
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
diti
Δημοσιεύσεις: 54
Εγγραφή: 09 Ιαν 2004 17:41
Τοποθεσία: ΘΕΣΣΑΛΟΝΙΚΗ
Επικοινωνία:

Google map Duration

Δημοσίευση από diti » 15 Δεκ 2010 17:16

Θέλω να εμφανίζω σε ένα πίνακα όλα τα durations μεταξύ ενός κυρίως point και όλων των άλλων points. (όπου γνωρίζω τις συντεταγμένες των points)
Δηλαδή, αν το κυρίως point είναι το Α, τότε να βρω το duration μεταξύ του Α και του Β, το duration μεταξύ του Α και του Γ, κτλ

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Google map Duration

Δημοσίευση από fafos » 15 Δεκ 2010 17:52

diti έγραψε:Θέλω να εμφανίζω σε ένα πίνακα όλα τα durations μεταξύ ενός κυρίως point και όλων των άλλων points. (όπου γνωρίζω τις συντεταγμένες των points)
Δηλαδή, αν το κυρίως point είναι το Α, τότε να βρω το duration μεταξύ του Α και του Β, το duration μεταξύ του Α και του Γ, κτλ
dose olo ton kodika (kai tyxon xml h lson) tou xarth...
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
diti
Δημοσιεύσεις: 54
Εγγραφή: 09 Ιαν 2004 17:41
Τοποθεσία: ΘΕΣΣΑΛΟΝΙΚΗ
Επικοινωνία:

Google map Duration

Δημοσίευση από diti » 16 Δεκ 2010 00:18

Ο κώδικας του map.php. Η συνάρτηση GetHttpRequestDuration() εμφανίζει τα durations.

Κώδικας: Επιλογή όλων



<?php
session_start&#40;&#41;;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http&#58;//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-7">
<meta http-equiv="Content-Style-Type" content="text/css">
<title>Map</title>

 <script charset="UTF-8" src="http&#58;//maps.google.com/maps?file=api&amp;v=2&hl=el&oe=utf-8&key=ABQIAAAAJ_VOu2suojQjVQOf1awTKxSrgP1H14j86luPB6hadaGnNCvvShSjmHMVyawNoJHIrxp0lT4j2ejk8A" type="text/javascript"></script>
    <script src="http&#58;//gmaps-utility-library.googlecode.com/svn/trunk/labeledmarker/release/src/labeledmarker.js" type="text/javascript"></script> 

     	
<script type="text/javascript">
    
		var map;
		var points = new Array&#40;&#41;;
		var durations = new Array&#40;&#41;;
		var markers;
		var stcode, stlat, stlng;
		 
		var insertok=0;
		var removeok=0;
		// Η σκιά του marker που θα εμφανιστεί
		var baseIcon = new GIcon&#40;G_DEFAULT_ICON&#41;;
        baseIcon.shadow = "http&#58;//www.google.com/mapfiles/shadow50.png";
        baseIcon.iconSize = new GSize&#40;20, 34&#41;;
        baseIcon.shadowSize = new GSize&#40;37, 34&#41;;
        baseIcon.iconAnchor = new GPoint&#40;9, 34&#41;;
        baseIcon.infoWindowAnchor = new GPoint&#40;9, 2&#41;;

 		// Το εικονίδιο του marker
		var redIcon = new GIcon&#40;baseIcon&#41;;
        //redIcon.image = "http&#58;//labs.google.com/ridefinder/images/mm_20_green.png";
	    redIcon.image = "http&#58;//labs.google.com/ridefinder/images/mm_20_purple.png";
		//redIcon.image = "http&#58;//www.google.com/mapfiles/marker.png";
	
// εγγραφή εγγραφής στον πίνακα locations και δημιουργία marker	
function GetHttpRequest&#40;point, name, label, lat, lng&#41;
&#123;
	stlat=lat;
	stlng=lng;
	
	var XMLHttpRequestObject=false;
	if &#40;window.XMLHttpRequest&#41;
 	&#123;
		XMLHttpRequestObject = new XMLHttpRequest&#40;&#41;;
 	&#125;
 	else if &#40;window.ActiveXObject&#41;
 	&#123;
		XMLHttpRequestObject =  new ActiveXObject&#40;"Microsoft.XMLHTTP"&#41;;
 	&#125;
	
	if &#40;XMLHttpRequestObject&#41;
	&#123;
		XMLHttpRequestObject.open&#40;"POST", "create_locations.php", false&#41;;
		XMLHttpRequestObject.setRequestHeader&#40;'Content-Type', 'application/x-www-form-urlencoded'&#41;;
	
		XMLHttpRequestObject.onreadystatechange = function&#40;&#41;
		&#123;
			if&#40;XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200&#41;
			&#123;	
				var rec = XMLHttpRequestObject.responseText;
				if &#40;rec==document.getElementById&#40;"placemark"&#41;.value&#41;
				&#123;
					alert&#40;"Location name exists"&#41;;
					document.getElementById&#40;"placemark"&#41;.value=""
					document.getElementById&#40;"placemark"&#41;.focus&#40;&#41;;
					return;
				&#125;
				if &#40;rec=="-1"&#41;
				&#123;
					alert&#40;"Wrong. Location not insert"&#41;;
					return;
				&#125;
				
				stcode=rec;
				
				// αν γίνει εγγραφή της τοποθεσίας στον πίνακα locations, δημιουργούμε έναν marker
				var marker = createMarker&#40;point, name, label&#41;;
            	map.addOverlay&#40;marker&#41;;
				document.getElementById&#40;"placemark"&#41;.value="";				
						
				GetHttpRequestDuration&#40;&#41;;
						
			&#125;
		&#125;
		var usern="<?php echo&#40;$_SESSION&#91;'username'&#93;&#41;  ?>";
		var param="username="+usern+"&placemark="+document.getElementById&#40;"placemark"&#41;.value+"&lat="+lat+"&lng="+lng
		XMLHttpRequestObject.send&#40;param&#41;;
	&#125;
&#125;
	
// εγγραφή στον πίνακα locations_duration
function GetHttpRequestDuration&#40;&#41;
&#123;
	
	var point=new Array&#40;&#41;;
	var durs=new Array&#40;&#41;;

	// start point
	point&#91;0&#93; = new GLatLng&#40;stlat, stlng&#41;;

	directions = new GDirections&#40;&#41;; 

	for &#40;var i = 0; i < markers.length; i++&#41; 
	&#123;
		
		point&#91;1&#93; = new GLatLng&#40;parseFloat&#40;markers&#91;i&#93;.getAttribute&#40;"lat"&#41;&#41;, parseFloat&#40;markers&#91;i&#93;.getAttribute&#40;"lng"&#41;&#41;&#41;;
		directions.loadFromWaypoints&#40;point&#41;; 
        GEvent.addListener&#40;directions, "load", function&#40;&#41;  
        &#123;  
        	alert&#40;directions.getDuration&#40;&#41;.seconds/60&#41;;  
        &#125;&#41;;  
		
	&#125;		
	
	// continue ..................
	
&#125;


// διαγραφή εγγραφής από τον πίνακα locations  και διαγραφή marker	
function GetHttpRequestDel&#40;marker, name&#41;
&#123;
	var XMLHttpRequestObject=false;
	if &#40;window.XMLHttpRequest&#41;
 	&#123;
		XMLHttpRequestObject = new XMLHttpRequest&#40;&#41;;
 	&#125;
 	else if &#40;window.ActiveXObject&#41;
 	&#123;
		XMLHttpRequestObject =  new ActiveXObject&#40;"Microsoft.XMLHTTP"&#41;;
 	&#125;
	
	if &#40;XMLHttpRequestObject&#41;
	&#123;
		XMLHttpRequestObject.open&#40;"POST", "delete_locations.php"&#41;;
		XMLHttpRequestObject.setRequestHeader&#40;'Content-Type', 'application/x-www-form-urlencoded'&#41;;
	
		XMLHttpRequestObject.onreadystatechange = function&#40;&#41;
		&#123;
			if&#40;XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200&#41;
			&#123;	
				var rec = XMLHttpRequestObject.responseText;
						
				if &#40;rec=="-1"&#41;
				&#123;
					alert&#40;"Wrong. Location not delete"&#41;;
					return;
				&#125;
				
				// αν γίνει διαγραφή της τοποθεσίας στον πίνακα locations, διαγράφουμε τον marker
				map.removeOverlay&#40;marker&#41;; 		
							
			&#125;
		&#125;
		var usern="<?php echo&#40;$_SESSION&#91;'username'&#93;&#41;  ?>";
		var param="username="+usern+"&placemark="+name
		XMLHttpRequestObject.send&#40;param&#41;;
	&#125;
&#125;
	
					
     function load&#40;&#41; &#123;
      if &#40;GBrowserIsCompatible&#40;&#41;&#41; &#123;
        map = new GMap2&#40;document.getElementById&#40;"map"&#41;&#41;;
        
		// συντεταγμένες της Θεσσαλονίκης
		map.setCenter&#40;new GLatLng&#40;40.613691819957566, 22.951126098632812&#41;, 13&#41;;
        //map.setCenter&#40;new GLatLng&#40;40.63935, 22.94461&#41;, 13&#41;;
	    map.setUIToDefault&#40;&#41;;
	    // διαβάζουμε το marker.php που είναι ένα xml αρχείο με πληροφορίες τα πεδία του πίνακα locations	
        GDownloadUrl&#40;"markers.php", function&#40;data&#41; &#123;
		  var xml = GXml.parse&#40;data&#41;;
		  markers = xml.documentElement.getElementsByTagName&#40;"marker"&#41;;
		  
		  for &#40;var i = 0; i < markers.length; i++&#41; &#123;
		    var name = markers&#91;i&#93;.getAttribute&#40;"name"&#41;;
        	var label = name.slice&#40;0,1&#41;;
            var point = new GLatLng&#40;parseFloat&#40;markers&#91;i&#93;.getAttribute&#40;"lat"&#41;&#41;,
                                    parseFloat&#40;markers&#91;i&#93;.getAttribute&#40;"lng"&#41;&#41;&#41;;
							
            // δημιουργία marker σύμφωνα με τις πληροφορίες που παίρνουμε από τον πίνακα locations
			var marker = createMarker&#40;point, name, label&#41;;
            map.addOverlay&#40;marker&#41;;
          &#125;
        &#125;&#41;;
	
		// εκτελείται όταν κάνουμε κλικ στον map			
		GEvent.addListener&#40;map,"click", function&#40;overlay,latlng&#41; &#123;
          if &#40;overlay&#41; &#123;
            // ignore if we click on the info window
            return;
          &#125;
          
		   // αν ο χρήστης επέλεξε Place Marker και το κείμενο δεν είναι κενό τότε δημιουργούμε marker
           	if &#40;insertok && document.getElementById&#40;"placemark"&#41;.value!=""&#41;
			&#123;	
				var pmark = document.getElementById&#40;"placemark"&#41;;
	 			var name = pmark.value;
				var label = name.slice&#40;0,1&#41;;
            	var point = new GLatLng&#40;latlng.lat&#40;&#41;, latlng.lng&#40;&#41;&#41;;
				
				// εγγραφή στον πίνακα και δημιουργία marker
				GetHttpRequest&#40;point, name, label, latlng.lat&#40;&#41;, latlng.lng&#40;&#41;&#41;;
								
		   	&#125;
			insertok=0;
		    removeok=0;
        &#125;&#41;;
		
      &#125;
    &#125;

    // δημιουργία marker	
    function createMarker&#40;point, name, label&#41; &#123;
 		
	    var marker = new LabeledMarker&#40;point, &#123;icon&#58; redIcon, labelText&#58; label, labelOffset&#58; new GSize&#40;-4, -32&#41;&#125;&#41;;
		
        // αν ο χρήστης κάνει κλικ στο marker
	GEvent.addListener&#40;marker, 'click', function&#40;&#41; &#123;
        // αν ο χρήστης επέλεξε Remove Marker
	if &#40;removeok&#41;
		&#123;
			 // διαγραφή εγγραφής από τον πίνακα και διαγραφή marker
			 GetHttpRequestDel&#40;marker, name&#41;;
			 //map.removeOverlay&#40;marker&#41;; 
		&#125;
		else
		&#123;		
			// εμφάνιση περιγραφής marker σε ένα σύννεφο διαλόγου
			marker.openInfoWindowHtml&#40;"Location&#58; " + name&#41;;
		&#125;
		removeok=0;
				
      &#125;&#41;; 
      
	  return marker;
    &#125;

    function okMarker&#40;&#41; &#123;
      insertok=1;
	&#125;
	function remMarker&#40;&#41; &#123;
      removeok=1;
	&#125;
	
	function fclose&#40;&#41;
	&#123;
		document.location="main.php"
	&#125;
  	
  </script>

<style type="text/css">
<!--
body &#123;
	background-color&#58; #006699;
	background-image&#58; url&#40;images/dblue096.gif&#41;;
	background-repeat&#58; repeat;
&#125;
body,td,th &#123;
color&#58; #336699;
font-size&#58; 18px;
&#125;
.style5 &#123;
	font-size&#58; 32px;
	font-style&#58; italic;
	font-weight&#58; bold;
&#125;
.style9 &#123;
	color&#58; #00FFFF;
	font-weight&#58; bold;
	font-style&#58; italic;
&#125;
.style14 &#123;color&#58; #006699; font-weight&#58; bold; &#125;
.style16 &#123;color&#58; #006699; font-weight&#58; bold; font-style&#58; italic; &#125;
.style17 &#123;
	color&#58; #CCCCCC;
	font-weight&#58; bold;
	font-style&#58; italic;
&#125;
.style20 &#123;font-size&#58; 24px; font-style&#58; italic; font-weight&#58; bold; &#125;
-->
</style>

</head>
<body onload="load&#40;&#41;" onunload="GUnload&#40;&#41;">
<table width="1158" height="718" border="1" align="center">
  <tr bgcolor="#C8E3E6">
    <td height="35" background="images/t_fon.gif"><div align="right"><br>
    </div></td>
  </tr>
  <tr>
    <td height="70" background="images/blueswirly-1100.jpg"><div align="center" class="style17"></div></td>
  </tr>
  <tr bgcolor="#C8E3E6">
    <td height="35" background="images/t_fon.gif"><div align="center"></div></td>
  </tr>
  <tr bgcolor="#C8E3E6">
    
	<td height="579" bgcolor="#E6E7E8"><center>	
	 <table width="96%" border="1">
       <tr>
         <td width="28%" height="550" bgcolor="#DDDDDD">
		 <form>
           <div align="right">
             <p>&nbsp;</p>
             <p>&nbsp;&nbsp;</p>
             <p>
                 <input type="text"  name="placemark"  id="placemark"/>
               <input name="button3" type="button"  onclick="okMarker&#40;&#41;" value="    Place Marker    "/>&nbsp;&nbsp;             </p>
             <p> 
              &nbsp;&nbsp;<input name="button" type="button" onclick="remMarker&#40;&#41;" value="  Remove Marker  "/>&nbsp;&nbsp;
             </p>
             <p>&nbsp;</p>
             <p>&nbsp;</p>
             <p>&nbsp;</p>
             <p>&nbsp;</p>
             <p>&nbsp;</p>
             <p>&nbsp;</p>
             <p>
               &nbsp;&nbsp;<input name="button2" type="button" onclick="fclose&#40;&#41;" value="      Close     "/>&nbsp;&nbsp;
             </p>
           </div>
         </form></td>
         <td width="69%" align="center" bgcolor="#DDDDDD"><div id="map"  class="mapdiv" style="width&#58; 740px; height&#58; 525px"></div></td>
       </tr>
     </table>
	 </center> 
	</td>
  </tr>
  <tr bgcolor="#C8E3E6">
    <td height="35" background="images/t_fon.gif"><div align="right"> <a href="https&#58;//www.google.com/calendar" target="_blank"> Google Calendar </a>&nbsp;</div>
	</td>
  </tr>
</table>


</body>
</html>

markers.php

Κώδικας: Επιλογή όλων


<?php

session_start&#40;&#41;;

// Δημιουργία xml αρχείου με στοιχεία από τον πίνακα locations

header&#40;"Content-Type&#58; text/xml; charset=utf-8"&#41;;
// Σύνδεση με τον server - Επιλογή βάσης δεδομένων
$conn = mysql_connect&#40;"localhost", "root", ""&#41; or die&#40;mysql_error&#40;&#41;&#41;;
mysql_select_db&#40;"webcalendar",$conn&#41; or die&#40;mysql_error&#40;&#41;&#41;;
mysql_query&#40;'set character set utf8',$conn&#41;;
mysql_query&#40;"SET NAMES 'utf8'",$conn&#41;;

$username=$_SESSION&#91;'username'&#93;;

// Δημιουργία ερωτήματος σε μεταβλητή - διαβάζουμε όλες τις τοποθεσίες
$sql = "select * from locations where locations.username = '$username' and locations.locode !=0 order by locations.locode"; 

// Εκτέλεση ερωτήματος
$result = mysql_query&#40;$sql&#41;;

// δημιουργία xml markers με στοιχεία από τον πίνακα locations

echo '<?xml version="1.0" encoding="ISO-8859-7" ?>';

echo '<markers>';

while&#40;$row=mysql_fetch_array&#40;$result&#41;&#41;
&#123;

echo '<marker code="'.$row&#91;locode&#93;.'" name="'.$row&#91;location&#93;.'" lat="'.$row&#91;lat&#93;.'" lng="'.$row&#91;lng&#93;.'" />';

&#125;

echo '</markers>';

?>


create_locations.php

Κώδικας: Επιλογή όλων


<?php

// Σύνδεση με τον server - Επιλογή βάσης δεδομένων
$conn = mysql_connect&#40;"localhost", "root", ""&#41; or die&#40;mysql_error&#40;&#41;&#41;;
mysql_select_db&#40;"webcalendar",$conn&#41; or die&#40;mysql_error&#40;&#41;&#41;;
mysql_query&#40;'set character set utf8',$conn&#41;;
mysql_query&#40;"SET NAMES 'utf8'",$conn&#41;;


// Βάζουμε σε μεταβλητές τις τιμές των πεδίων φόρμας
$username=$_POST&#91;"username"&#93;;
$location=$_POST&#91;"placemark"&#93;;
$lat=$_POST&#91;"lat"&#93;;
$lng=$_POST&#91;"lng"&#93;;

// Δημιουργία ερωτήματος σε μεταβλητή - έλεγχος αν υπάρχει η τοποθεσία 
$sql = "select * from locations where locations.username = '$username' and locations.location = '$location'"; 
$result = mysql_query&#40;$sql&#41;;
$row=mysql_fetch_array&#40;$result&#41;;

if&#40;$row&#41; 	// η τοποθεσία υπάρχει
&#123;	
	echo $row&#91;"location"&#93;;
	exit&#40;&#41;;
&#125;



// διαβαζουμε για να βρουμε τον μεγαλυτερο κωδικο locode συγκεκριμενου χρηστη, για να σωσουμε το επομενο location με αυτο τον κωδικο + 1 
$sql = "select max&#40;locode&#41; as maxcode from locations where locations.username = '$username'"; 
$result = mysql_query&#40;$sql&#41;;
$row=mysql_fetch_array&#40;$result&#41;;

if&#40;!$row&#41; 					// δεν υπαρχει κανένα location για το συγκεκριμμένο username
	$tcode=1;
else
	$tcode = $row&#91;'maxcode'&#93;+1;



$sql = "INSERT INTO locations VALUES &#40;'$username', '$tcode', '$location', '$lat','$lng'&#41;";


if &#40;mysql_query&#40;$sql&#41;&#41;
&#123;
	echo&#40;$tcode&#41;;
&#125;
else
&#123;	
	echo&#40;"-1"&#41;;
	exit&#40;&#41;;
&#125;


?>

delete_locations.php

Κώδικας: Επιλογή όλων


<?php

// Σύνδεση με τον server - Επιλογή βάσης δεδομένων
$conn = mysql_connect&#40;"localhost", "root", ""&#41; or die&#40;mysql_error&#40;&#41;&#41;;
mysql_select_db&#40;"webcalendar",$conn&#41; or die&#40;mysql_error&#40;&#41;&#41;;
mysql_query&#40;'set character set utf8',$conn&#41;;
mysql_query&#40;"SET NAMES 'utf8'",$conn&#41;;


// Βάζουμε σε μεταβλητές τις τιμές των πεδίων φόρμας
$username=$_POST&#91;"username"&#93;;
$location=$_POST&#91;"placemark"&#93;;


// διαγράφουμε τις αντίστοιχες εγγραφές από τον πίνακα class_locations για τη συγκεκριμμένη κλάση
$sql = "DELETE from locations where locations.username = '$username' and locations.location = '$location'";

if &#40;!mysql_query&#40;$sql&#41;&#41;
&#123;	
	echo&#40;"-1"&#41;;
&#125;

?>

Όταν δημιουργούμε καινούργιο marker τότε θέλουμε να βρούμε τα durations αυτού ως προς τα υπόλοιπα.

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Google map Duration

Δημοσίευση από fafos » 16 Δεκ 2010 03:12

to exeis dokimasei na dinei ta durations me html se kapoio div h mono me alert? den vrisko kapoio lathos..
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
diti
Δημοσιεύσεις: 54
Εγγραφή: 09 Ιαν 2004 17:41
Τοποθεσία: ΘΕΣΣΑΛΟΝΙΚΗ
Επικοινωνία:

Google map Duration

Δημοσίευση από diti » 16 Δεκ 2010 10:31

Στη συνάρτηση GetHttpRequestDuration() που εμφανίζω τα durations, το alert το έχω βάλει προσωρινά για να δω. Κανονικά θα τα στέλνω για εγγραφή σε πίνακα.
Το πρόγραμμα δουλεύει αλλά μου βγάζει duration πάντα την ίδια τιμή για όλα τα markers (μάλλον το duration με το τελευταίο). Εσύ το έτρεξες το πρόγραμμα και βγάζει διαφορετικές τιμές στο duration;

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Google map Duration

Δημοσίευση από fafos » 17 Δεκ 2010 00:31

me 1+1 point to dokimasa statika... mhpos to point[1] thelei point?
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
diti
Δημοσιεύσεις: 54
Εγγραφή: 09 Ιαν 2004 17:41
Τοποθεσία: ΘΕΣΣΑΛΟΝΙΚΗ
Επικοινωνία:

Google map Duration

Δημοσίευση από diti » 17 Δεκ 2010 01:10

Η εντολή directions.loadFromWaypoints(point); χρησιμοποιεί τον πίνακα point. Επομένως βάζω πάντα στο point[0] το κυρίως point και στο point[1] βάζω κάθε φορά και ένα καινούργιο point έτσι ώστε ο πίνακας να έχει πάντα 2 θέσεις - 2 points και να βρίσκω τη μεταξύ τους απόσταση. Το for το χρησιμοποιώ για να διαβάσω όλα τα points που έχω στον χάρτη. Δεν ξέρω αν χρησιμοποιώ σωστά τις εντολές. Τις βρήκα να δουλεύουν σωστά για 2 Points.

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Google map Duration

Δημοσίευση από fafos » 17 Δεκ 2010 01:52

diti έγραψε:Η εντολή directions.loadFromWaypoints(point); χρησιμοποιεί τον πίνακα point. Επομένως βάζω πάντα στο point[0] το κυρίως point και στο point[1] βάζω κάθε φορά και ένα καινούργιο point έτσι ώστε ο πίνακας να έχει πάντα 2 θέσεις - 2 points και να βρίσκω τη μεταξύ τους απόσταση. Το for το χρησιμοποιώ για να διαβάσω όλα τα points που έχω στον χάρτη. Δεν ξέρω αν χρησιμοποιώ σωστά τις εντολές. Τις βρήκα να δουλεύουν σωστά για 2 Points.
nai.. to for analyei mia array point kai thn kanei point[0], point[1], point[2] klp... etsi opos to exeis (nomizo) zhtaei panta to point[1]...
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
diti
Δημοσιεύσεις: 54
Εγγραφή: 09 Ιαν 2004 17:41
Τοποθεσία: ΘΕΣΣΑΛΟΝΙΚΗ
Επικοινωνία:

Google map Duration

Δημοσίευση από diti » 17 Δεκ 2010 02:32

Ναι πάντα ζητάει το point[1] γιατί σε αυτό βάζω κάθε φορά διαφορετικό point.
π.χ.
από το point Α θέλω να βρω το duration με το Β,
από το point Α θέλω να βρω το duration με το Γ,
από το point Α θέλω να βρω το duration με το Δ.
Βάζω στο point[0] τις συντεταγμένες του point Α
και τη 1η φορά βάζω στο point[1] τις συντεταγμένες του point Β για να βρω το duration του Α με το Β,
τη 2η φορά βάζω στο point[1] τις συντεταγμένες του point Γ για να βρω το duration του Α με το Γ,
τη 3η φορά βάζω στο point[1] τις συντεταγμένες του point Δ για να βρω το duration του Α με το Δ.

Το for το χρησιμοποιώ για να πάρω τις συντεταγμένες όλων των points που έχω στον χάρτη και όχι για να γεμίσω όλες τις θέσεις στον πίνακα point.

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Google map Duration

Δημοσίευση από fafos » 17 Δεκ 2010 17:59

kanonika einai loupa kai prepei na psaxneis gia point apokleiontas to point[0] to opoio sygkrinetai me ta ypoloipa.. kai pali omos den douleuei.. to provlhma prepei na einai h function tou duration h opoia den trexei mesa se loupa... vevea, efoson exeis thn apostash mporeis na kaneis ton ypologismo ths diarkeias me aplous logarithmous.. des ena paradeigma edo:

http://istopoli.com/cruise/maps/duration.html

auto vevea einai se eutheia grammh kai den ypologizete sosta h diarkeia...

parathrhse pos kano thn sygkrish xrhsimopoiontas 2 for ( i kai j)... sthn pragmatikothta kai ta 2 for zhtane ta idia pragmata alla me ena if periorizo na pairnei apo to i mono to 0 kai na to sygkrinei me oles tis eggrafes tou j ektos tou 0


if (i == 0 && j > 0)


den ksero an vgaleis akrh me auto alla melethse to..
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
diti
Δημοσιεύσεις: 54
Εγγραφή: 09 Ιαν 2004 17:41
Τοποθεσία: ΘΕΣΣΑΛΟΝΙΚΗ
Επικοινωνία:

Google map Duration

Δημοσίευση από diti » 19 Δεκ 2010 00:38

Θα το μελετήσω. Βέβαια δεν θέλω να υπολογίζω το χρόνο σε ευθεία αλλά θα δω τι θα κάνω. Μάλλον κάποιο πρόβλημα υπάρχει στη συνάρτηση GEvent.addListener(directions, "load", function() όταν υπάρχει loop. Ενώ εκτελείται το loop στο τέλος μπαίνει σ' αυτή τη συνάρτηση και κάνει loop με το τελευταίο point. Σκεφτόμουν μήπως υπάρχει κάποιο άλλο γεγονός από το load που θα βοηθούσε στη συγκεκριμμένη περίπτωση.
Σ' ευχαριστώ πολύ για το χρόνο που αφιέρωσες. Θα ενημερώσω για οποιοδήποτε νέο.

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης