<?php
// ab16karte.php - Welches ist die n&auml;chstgelegene Haltestelle (Luftlinie) zu einem beliebigem Punkt auf der Karte?

include 'header.php';


// ############ START QUERY ############################################################
$lat = "31.250613";
$long = "121.481323";
$zoom = "11";


$query = "
SELECT latitude, longitude, name
FROM stations
";


$result = mysqli_query($db, $query);
if ($result) {
   $rows = mysqli_num_rows($result);
   $cols = mysqli_num_fields($result);
   for($r=0; $r< $rows; $r++) {
 		list($xobj[$r], $yobj[$r], $nobj[$r]) = mysqli_fetch_row($result);
   }
} 
else {
   echo "Fehler";
}

mysqli_free_result($result);

echo '<script type="text/javascript">';
echo '
   function load() {
// Ereignislistener für die Marker
      function createListener (marker, text) {
         GEvent.addListener(marker, "click", function() {
            marker.openInfoWindowHtml(text);
         }
         );
      }
   
      if (GBrowserIsCompatible()) {
// Erzeugen einer neuen Karte
         var map = new GMap2(document.getElementById("map"));
// Festlegen des Typs der Karte		
		map.setMapType(G_SATELLITE_MAP);
// Hinzufügen von Steuerelementen
         map.addControl(new GLargeMapControl());
         map.addControl(new GMapTypeControl());
         map.addControl(new GScaleControl());
         map.addControl(new GOverviewMapControl());
// Erzeugen eines benutzerdefinierten Icons
         var icon = new GIcon();
         icon.image = "images/markerstation.png";
         icon.shadow = "images/markerstation_schatten.png";
         icon.iconSize = new GSize(20, 20);
         icon.shadowSize = new GSize(20, 20);
         icon.iconAnchor = new GPoint(10, 10);
         icon.infoWindowAnchor = new GPoint(10, 10);
		
';
echo '
// Setzen des Kartenmittelpunktes und der Zoomstufe
         map.setCenter(new GLatLng('.$lat.', '.$long.'), '.$zoom.');
// Erstellen von Arrays für die Marker
         var points = new Array();
         var text = new Array();
         var marker = new Array();
		 var stations_lat = new Array();
		 var stations_lng = new Array();
';
// Mit Hilfe von PHP werden die Arrays gefüllt
for ($r=0; $r<$rows; $r++) {
   echo '
         points['.$r.'] = new GLatLng('.$xobj[$r].','.$yobj[$r].');
         text['.$r.'] = "'.$nobj[$r].'";
// Hinzufügen der Marker zur Karte und des Listeners
         stations_lat['.$r.'] =  '.$xobj[$r].';
		 stations_lng['.$r.'] =  '.$yobj[$r].';
   ';
}

echo '
         var marker = new Array();

		 GEvent.addListener(map,"click", function(overlay,point) {     
			
			var sel_pointlat = point.lat();
			var sel_pointlng = point.lng();
			var min_result = 10000;
			var result = 100;
			var x = 0;
			for (i=0; i< stations_lat.length; i++) {
			   result = Math.acos(Math.sin(sel_pointlat * Math.PI / 180) * Math.sin(stations_lat[i] * Math.PI / 180) + Math.cos(sel_pointlat * Math.PI / 180) * Math.cos(stations_lat[i] * Math.PI / 180) * Math.cos(stations_lng[i] * Math.PI / 180 - sel_pointlng * Math.PI / 180)) / (2 * Math.PI) * 40000;
				if (result < min_result) {
				   min_result = result;
				   x = i ;
			    }

			}
			min_result_round = min_result.toFixed(3);
			map.clearOverlays();
            if (min_result  < 1) {
			   map.setCenter(new GLatLng(stations_lat[x], stations_lng[x]), 15);
            }
			else {
			   if (min_result < 4) {
			      map.setCenter(new GLatLng(stations_lat[x], stations_lng[x]), 13);
               }
			   else {
			      if (min_result < 6) {
			         map.setCenter(new GLatLng(stations_lat[x], stations_lng[x]), 12);
                  }
			      map.setCenter(new GLatLng(stations_lat[x], stations_lng[x]), 11);
               }
			}   
			map.addOverlay(new GMarker(new GLatLng(sel_pointlat, sel_pointlng)));
			marker[x] = new GMarker(points[x], icon);
            map.addOverlay(marker[x]);
            createListener (marker[x], text[x]);
			var myHtml = "Die n&auml;chstgelegene Haltestelle ist: <b>" + text[x] + "</b><br> Die Entfernung dorthin (Luftlinie) betr&auml;gt: <b>" + min_result_round + " km</b>";
            map.openInfoWindow(point, myHtml);
			createListener (marker[x], text[x]);
         });

		 
';

echo '
      }
   }
   </script>
'; 



echo '</head>';
// ############ START BODY ############################################################
echo '<body onLoad="load()" onUnload="GUnload()">';

include 'menu.php';


// ############ START CONTENT ############################################################
echo '
   	<div id="content">
	    <a href="abfragen.htm" class="menulink">zur&uuml;ck zu den Abfragen</a>
		<h1>Welches ist die n&auml;chstgelegene Haltestelle (Luftlinie) zu einem beliebigem Punkt auf der Karte?</h1>
        Klicken Sie dazu bitte auf den gew&uuml;nschten Ort in die Karte!
		<div id="map" align="center" style="width: 800px; height: 500px"></div>
';

include 'footer.php';
?>