GPS Position von iOS Geräte im Webfront anzeigen.

So ich habe es bei mir zum laufen gebracht.
Da ich IPS von außen nicht erreichbar habe, habe ich das orginalskript auf einem Webserver laufen
der mir die Daten aber in die MySQL DB schreibt. Angezeigt wird mir alles durch die map.php aus dem ersten Beitrag.
Um die DB nicht mit gleichen Datensätzen zuzumüllen habe ich noch folgende If abfrage eingebaut.

if ($latit == $row['latitude']and $longit == $row['longitude'])
	{
	mysql_close($connection);
	return;
	}
# MySql Dateb schreiben ########################################################

Soweit so gut, klasse fänd ich wenn ich jetzt zwischen den einzelnen datensätzen umschalten kann mit einem vor und zurück Button.
Da ich freiberuflich viel unterwegs bin, könnte ich so meine Projektzeiten besser nachhalten/kontrollieren.
Kann mir jemand einen Tipp geben.

Hallo Leute,

ich möchte gerne noch mal auf meinen Beitrag #40 zurückkommen…

Ich versuche seit Tagen mit mehr oder weniger Motivation, diesen „Schönheitsfehler“ zu korrigieren. Ich habe mit IPS_Sleep experimentiert, mit doppelten Befehl das Bild zu laden - offenbar ist das nicht der richtige Weg…

Lade ich die Seite erneunt (z.B. durch das „Aktualisieren“ im Browser) wird das Bild korrekt angezeigt, auch wenn - wie ich schon erwähnte - ich das Skript noch mal „manuell“ anstosse.
Rufe ich das Webfront im Browser neu auf und die Seite war beim Beenden „vorne“, wird die Karte korrrekt angezeigt, rufe ich sie erst danach auf, wird das Bild nur unvollständig angezeigt…:confused:

Woran kann das liegen?

Joachim

Nachtrag: Im Firefox wird zwar das Bild schon komplett angezeigt, aber die „Zentralisierung“ auf die Koordinate ist noch nicht „fertiggestellt“…

Hallo Leute,

auf vier Apple-Geräten läuft utmBeacon nun bei mir, auf einem IPhone 4 und einem iPhone 4s kommen die Daten auch m.W. zu einem sehr hohen Prozentsatz korrekt an, bei einem iPad 3 und einen iPhone 5 kommt es immer wieder zu Fehlermeldungen - sowohl auf den Geräten selbst durch utmBeacon als auch im IPS. Schaut man sich die auf den Server geschriebenen Dateien an, dann fällt auf das einige der ersten Zeichen offenbar fehlen was dann in Zeile 53 des utmBeacon-Skriptes zu einer Fehlermeldung führt…

Kennt jemand auch diese Geschichte?:confused:

Joachim

Hallo Leute,

ich habe einfach mal die vom Skript erstellte txt-Datei der betreffenden Geräte gelöscht und neu erstellen lassen - bisher keine neuen Fehlermeldungen. Manchmal kann es so einfach sein…:wink:

Joachim

Hallo zusammen,
ich habe in den letzten Tagen das Thema Standortbestimmung auch umgesetzt und wollte dann auch die bereits angesprochene Linie der letzten Standorte umsetzen. Inzwischen habe ich das auch hinbekommen. Da ich aber in SQL bisher überhaupt keine Erfahrung hatte, habe ich dafür relativ lange gebraucht und habe jetzt bestimmt eine Lösung wo einige darüber lachen werden. Deshalb meine Bitte wenn die SQL Abfragen irgendwie besser gehen, bin ich und bestimmt ander für jeden Tipp dankbar.

Die SQL Abfrage habe ich dann aber in die map.php datei verschoben, da ja sonst viele Daten in dem Link übergeben werden müßen.
Die Google API kann die Linie als Overlay ausgeben, das heist bei denen Polylinien mit dem Link könnt ihr nachlesen wenn ihr wollt:
https://developers.google.com/maps/documentation/javascript/overlays?hl=de-DE#Polylines

Ich habe dann noch eine zusätzliche Integer Variable Anzahl angelegt, damit könnt ihr dann die Anzahl der Datensätze angeben die dargestellt werden sollen.

Mein Skript Standort bestimmen sieht dann nur noch so aus (ggf. Variablen anpassen):

<?

// Hilfs-Integervariable mit Profil anlegen
if($IPS_SENDER == "WebFront")
{
   SetValue($IPS_VARIABLE, $IPS_VALUE);
}

//Abfrage des eingestellten Gerätes
$name = GetValueFormatted(15478 /*[meine Hardware\Standortbestimmung\Standortbestimmung\Geräte]*/);


//Festlegen der Anzahl der anzuzeigenden letzten Standorte per Linie
$anzahl = GetValueInteger(44685 /*[meine Hardware\Standortbestimmung\Standortbestimmung\Anzahl letzte Standorte]*/);
       
//Festlegen des Links für den Aufruf der Karte
SetValueString(42759 /*[meine Hardware\Standortbestimmung\Standortbestimmung\Karte]*/, "<iframe src=\"user/utrackme/map.php?devicename=".$name."&anzahl=".$anzahl."\" border=\"0\" frameborder=\"0\" style=\"top:0pt; bottom:0pt; left:0pt; right:0pt; width:100%; height:400px;\"/></iframe>");

?>

Die map.php Datei enthält dann jetzt auch die SQL Abfragen und sieht so aus (die Datenbanktabelle heist bei mir utrackme ggf. im Skript bei euch ändern):

<?php
//Übergebe Parameter aus dem Link
$devicename = $_GET['devicename'];
$anzahl = $_GET['anzahl'];

// SQL Datenbank Zugriffsdaten
$MySQLHost="xxxxxxxxxxxxxxx";
$username="xxxxxxxxxxxxxx";
$password="xxxxxxxxxxxxxxxxxxxx";

// Connect zur Datenbank
$link = mysql_connect($MySQLHost, $username, $password) or die("Keine Verbindung möglich!");

mysql_select_db("xxxxxxxxxxxxxxxxxxxx") or die("Auswahl der Datenbank fehlgeschlagen");

//Abfrage Anzahl der gesamten Zeilen für die Limit Funktion
$select0 = "SELECT id FROM utrackme where (devicename = '$devicename')";
$zeilen1 = mysql_query($select0);
$zeilen = mysql_num_rows($zeilen1);

//Abfrage der eigentlichen Daten für die Linie
$select1 = "SELECT devicename,date,time,latitude,longitude FROM utrackme where (devicename = '$devicename') ORDER BY id LIMIT ".($zeilen-$anzahl).", ".$anzahl;
$query1 = mysql_query($select1);

//Abfrage der Daten für den Marker und das zentrieren der Map
$select2 = "SELECT devicename,date,time,latitude,longitude FROM utrackme where (devicename = '$devicename') ORDER BY id DESC LIMIT 0,1";
$query2 = mysql_query($select2);

// Connect zur Datenbank trennen
mysql_close($link);


//Tabelle für die Linien generieren
$tabelle = "";
 while($row1 = mysql_fetch_object($query1))
         {
          $tabelle = $tabelle."new google.maps.LatLng(".$row1->latitude.", ".$row1->longitude."),";


         }

 //Die Koordinaten für den Marker generieren
 while($row2 = mysql_fetch_object($query2))
         {
          $aktuelle = $row2->latitude.", ".$row2->longitude;
          $time = $row2->date.", ".$row2->time;
         }
?>



<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
  html { height: 100% }
  body { height: 100%; margin: 0px; padding: 0px }
  #map_canvas { height: 100% }
</style>
<script type="text/javascript"
    src="https://maps.google.com/maps/api/js?sensor=false">
</script>
<script type="text/javascript">
  function initialize() {
    var latlng = new google.maps.LatLng(<?php echo $aktuelle; ?>);
    var myOptions = {
      zoom: 15,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("map_canvas"),
        myOptions);

	var marker = new google.maps.Marker({
		position: latlng,
		map: map,
		title:"<?php echo $devicename; ?>"
	});

  var flightPlanCoordinates = [

  <?php echo $tabelle; ?>

  ];
  var flightPath = new google.maps.Polyline({
    path: flightPlanCoordinates,
    strokeColor: "#FF0000",
    strokeOpacity: 1.0,
    strokeWeight: 2
  });

  flightPath.setMap(map);

  }

</script>
</head>
<body onload="initialize()">
  <div id="map_canvas" style="width:100%; height:100%"></div>
</body>
</html>

in dem Berich var flightPlanCoordinates… wird eben jetzt eine Aufzählung der Koordinaten für die letzten Standorte generiert. Weil ich das in der richtigen Reihenfolge haben wollte und natürlich immer die letzten XX Standorte aus der Datenbank, war das mit der SQL Abfrage für mich jedenfalls sehr schwierig. Ich bin dann mit der LIMIT funktion und die angabe der Zeile (also die Gesamte anzahl abzüglich der darzustellenden Zeilen) auf mein Ergebnis gekommen. Geht das irgendwie einfacher???

Also, ich hoffe damit kann jemand was anfangen. Viel Spaß damit.