[Modul] GPS Position auf Google Maps Karte live verfolgen

Ist vielleicht eine doofe Frage… aber: Kannst du nicht einfach updaten? IP-Symcon 5.5 ist schon lange verfügbar :slight_smile:

paresy

Nee, wollte ich eigentlich nicht.
Mit der Stable 5.5 hatte ich zu viele Probleme (Stabilität, Speicher usw.), das ich auf der 5.4 geblieben bin.
Und jetzt ist dann auch wieder die Substriction abgelaufen um noch mal die 5.5 testen zu können.

Kurzes Update:
Mit der V5.4 läuft das Modul auch, auch mit IPSview.
Danke dafür.

Was mir noch nicht so ganz gefällt ist das man bei Google unter Umständen auch zahlen muss, da die Kreditkartendaten ja hinterlegt werden müssen.
Da weiss ich doch in ein paar Jahren nicht mehr, das ich das dort freigegeben habe oder die 200$ Freiguthaben fallen mal plötzlich weg.
Ich kann mich gar nicht daran erinnern, das ich das vor ein paar Jahren für die statischen Karten auch machen musste, ich glaube da war nicht mal eine API notwendig?

Was hat es denn genau mit der Updatelimitierung im Modul auf sich?

VG,
Doc

Da geht es darum, dass du über den WebSocket Kanal nicht alle Sekunde die Position rausfeuerst, sondern es gemütlicher versendest. z.B. alle 10 Sekunden oder sogar alle 60 Sekunden. Spart Traffic, wenn du z.B. auf einer LTE Verbindung unterwegs bist. (Und GPS Empfänger bekommen in der Regel die Position jede Sekunde)

Ich habe soeben noch ein Update hochgeladen, welches die Postion initial auch korrekt dynamic lädt. (Vorher stand das Auto beim ersten Laden auf der initialen Position anstatt der aktuellen GPS Position)

paresy

Ah ok, ich nutze bei mir ja keinen Websocket.
Wie begrenze ich denn die API Anfragen zu Google?

Was ich auch noch nicht gefunden habe, wie du dynamisch den Zoomlevel nach der Entfernung änderst?
Habe nur einen fixen Zoomlevel von 12 gefunden.
Suche gerade nach einer Möglichkeit auch mehrere Sender auf einer Karte darzustellen und wollte hier den Zoomlevel nach der größten Entfernung anpassen?

Das Modul nutzt den intern - somit bin ich mir sicher, dass er auch bei dir läuft :wink:

Du kannst nur auf der Google Seite Limitationen festlegen. Ich kann dir aber leider nicht sagen wo genau das geht - freue mich aber auf dein Feedback wenn du es gefunden hast. Gehen soll es auf jeden Fall:

Der Rest ist im Modul fest kodiert. Falls du gleichzeitig mehrere Marker anzeigen willst, müsstest du das Modul entsprechend selber modifizieren. Such mal nach zoom in der map.html.

Hier noch Tipps, wie man den Zoom bestimmt, wenn es mehrere Marker auf der Map gibt: javascript - Center/Set Zoom of Map to cover all visible Markers? - Stack Overflow

paresy

Ja das hatte ich ja und nur das hier gefunden …

let options = {
                zoom: 12,
                center: homeLatLng,
                mapTypeId: google.maps.MapTypeId.ROADMAP,
                streetViewControl: false,
                rotateControl: false,
                fullscreenControl: false
            };

Das ist doch ein fester Zoomlevel oder habe ich das falsch verstanden?

Ich hatte in meinem alten Script erst die Entfernung berechnen müssen.

// Entfernung nach Zuhause (in km)
$Lon_aktuell = $lon;
$Lat_aktuell = $lat;
$Longitude = x.x;
$Latitude = x.x;
$Entfernung = (acos(sin($Longitude=deg2rad($Longitude))*sin($Lon_aktuell=deg2rad($Lon_aktuell))+cos($Longitude)*cos($Lon_aktuell)*cos(deg2rad($Lat_aktuell) - deg2rad($Latitude)))*(6378.137));

// Zoomfaktor festlegen
if ($Entfernung < 0.2) $zoom = 18;
if ($Entfernung > 0.2) $zoom = 16;
if ($Entfernung > 1) $zoom = 15;
if ($Entfernung > 10) $zoom = 14;
if ($Entfernung > 50) $zoom = 13;
if ($Entfernung > 100) $zoom = 12;
if ($Entfernung > 200) $zoom = 10;

Limits für die Anzahl der Anfragen ändern

Sie können für alle Anfragen an eine abrechnungsfähige API Grenzen ein Limit angeben. Die meisten APIs legen Standardlimits fest. Sie können dieses Limit jedoch bis zu einem von Google festgelegten Maximum ändern. Das Limit mancher APIs bleibt sehr niedrig, bis Sie die Abrechnung für Ihr Projekt aktivieren.

Führen Sie folgende Schritte aus, um die Limits für Ihre API aufzurufen oder zu ändern:

  1. Öffnen Sie in der Cloud Console unter „APIs & Dienste“ die Seite „Dashboard“.
  2. Wählen Sie aus der Projektliste ein Projekt aus oder erstellen Sie ein neues.
  3. Klicken Sie auf den Namen der jeweiligen API.
  4. Klicken Sie auf Kontingente. Wenn der Menüpunkt Kontingente im linken Navigationsbereich nicht vorhanden ist, sind für die von Ihnen ausgewählte API keine Kontingente definiert.
  5. Klicken Sie in der Kontingentzeile, die geändert werden soll, auf das Bearbeitungssymbol (edit) und geben Sie Ihr gewünschtes Gesamtkontingent bis zum von Google festgelegten Limit ein

1 „Gefällt mir“

Hi Paresy,
was ich noch vermissen würde wäre ein definierbarer Radius um die Heimatadresse um bei Eintritt bzw. Verlassen dieser Zone Benachrichtigt zu werden…so in der Art wie bei Geofency (jedoch ohne zusätzliche App auf dem Mobilgerät) :+1:

Dies ist ja eine simple Berechnung zwischen zwei Koordinaten + Ereignis. Ich würde das in diesem Modul nicht wirklich passend sehen :slight_smile:

paresy

Eine Berechnung zwischen zwei Koordinaten ist aber kein Umkreis bzw. eine Zone…
Oder habe ich etwas falsch verstanden?
Wie lässt sich hierbei ein Umkreis erstellen?

$Entfernung = (acos(sin($Longitude=deg2rad($Longitude))*sin($Lon_aktuell=deg2rad($Lon_aktuell))+cos($Longitude)*cos($Lon_aktuell)*cos(deg2rad($Lat_aktuell) - deg2rad($Latitude)))*(6378.137));

… oder siehe weiter oben …

… oder hier direkt mit dem Radius …

// Zuhause
$Lon_aktuell = $lon;
$Lat_aktuell = $lat;
$Longitude = x.x;
$Latitude = x.x;
$Radius = 0.150;
if ((acos(sin($Longitude=deg2rad($Longitude))*sin($Lon_aktuell=deg2rad($Lon_aktuell))+cos($Longitude)*cos($Lon_aktuell)*cos(deg2rad($Lat_aktuell) - deg2rad($Latitude)))*(6378.137)) < $Radius) $Standort = "Zuhause";

Gruss,
Doc

Vielen Dank, das scheint zu funktionieren.
Klasse wäre es den Umkreis auf der Karte zu sehen, aber alles kann man vermutlich nicht haben :+1:

Um den Umkreis an einem beliebigen Punkt in einem beliebigen Durchmesser in GoogleMaps zu zeichnen gibt es bereits Lösungen im Internet zu finden, wie z.B. hier
Aber wäre es möglich dieses Feature in diesem Modul zu integrieren?
Hat das schon einer erfolgreich probiert?

Würde mich über Lösungsansätze freuen!
Yansop

Ich habe soeben noch ein Update hochgeladen, welches das „Verfolgen“ vom Fahrzeug deaktiviert, sobald man den Zoom Level ändert oder in der Karte was verschiebt. Dadurch kann man sich die Gegend ansehen und später wieder auf „Fahrzeug verfolgen“ zurückschalten.

Zusätzlich habe ich noch ein CORS Problem bei Nutzung von IPSView + Connect gelöst.

paresy

10.05.2021, 11:57:42 | PHPLibrary           | Parameter location in der Funktion PST_SendLocation hat keinen Datentyp. Definieren Sie entweder 'bool', 'int', 'float' oder 'string'

habe ich gerade nach einem Neustart im Statusprotokoll entdeckt. siehe auch hier
Revision 5.5.21 : d2e44f8d1f0b

Fix ist jetzt online.

paresy

super, danke. hab gerad gesehen, dass der Beitrag hier gelandet war. sollte eigentl nicht, sorry

Ich habe ihn hier verschoben - denn hier passt er besser :slight_smile:

paresy

Hi paresy,
ich habe mir soeben mal dein neues Feature angeschaut, welches die Fahrzeugverfolgung bei Änderung von Zoom oder Karte verschieben deaktiviert.
Ich finde es ziemlich unpraktisch hiermit das Fahrzeug in einer Großstadt oder in Gegenden mit vielen Straßen zu verfolgen.
Den möchte man sich das Straßennetz genauen ansehen wo sich das Fahrzeug gerade bewegt wird die Verfolgung abgeschaltet. Aktiviert man die Verfolgung wieder wird der Kartenzoom wieder zurückgesetzt und ich kann wiederum die Straße nicht erkennen.

Gruß Yansop.