Gelöst:Standortanzeige auf Karte

Begonnen von Masterfunk, 03 Januar 2016, 14:24:57

Vorheriges Thema - Nächstes Thema

Papaloewe

Ich bin auch kein Programmierer, aber denke, dass bei dir zwei "geschweifte Klammern auf" fehlen,
oder zwei "geschweifte Klammern zu" zuviel sind.

$htmlcode .= "var map = new google.maps.Map(document.getElementById('map'), mapOptions);  ";
$htmlcode .= "}";
$htmlcode .= "var marker = new google.maps.Marker( markerOptions);  ";
$htmlcode .= "}";

Masterfunk

Hab alle vermeintlich möglichen Konstellationen getestet.
Kein Erfolg. :-(

Gruß Detlef

Masterfunk

#17
Es geht!

Hier der funktionierende Code für die Mytils:

sub ShowGoogleMapsPosition($$$) {
my ($zoom,$width,$height,$lat,$lng) = @_;
$zoom='12' unless $zoom;
$width='740' unless $width;
$height='470' unless $height;
$lat= ReadingsVal ("rr_Detlef", "locationLat", "0");
$lng= ReadingsVal ("rr_Detlef", "locationLong", "0");

  my $htmlcode = "";

  $htmlcode .= "<script src='https://maps.googleapis.com/maps/api/js?v=3.exp'></script>";
  $htmlcode .= "<script>";
  $htmlcode .= "function initialize() {  ";
  $htmlcode .= "var myLatlng = new google.maps.LatLng(".$lat.",".$lng.");  ";
  $htmlcode .= "var mapOptions = {    ";
  $htmlcode .= "  zoom: ".$zoom.",    ";
  $htmlcode .= "  center: myLatlng  ";
  $htmlcode .= "};  ";
  $htmlcode .= "var map = new google.maps.Map(document.getElementById('map'), mapOptions);  ";
  $htmlcode .= "var marker = new google.maps.Marker({ ";
  $htmlcode .= "  position: myLatlng, ";
  $htmlcode .= "  title: 'Detlef', ";
  $htmlcode .= "}); ";
  $htmlcode .= "marker.setMap(map); ";
  $htmlcode .= "} ";
  $htmlcode .= "google.maps.event.addDomListener(window, 'load', initialize);    ";
  $htmlcode .= "</script>    ";
  $htmlcode .= "<div id='map' style='width:".$width."px;height:".$height."px;'></div>";
 
  return $htmlcode;
}


Einzig der "Titel" wird nicht angezeigt. Schaun mer mal... Da fehlte ein Komma. (Im Code korrigiert)

Gruß Detlef

Masterfunk

Hab noch den "Resident" als Variable eingebaut, damit man nicht für jeden eine eigene Sub in der MyUtuls anlegen muss.

Definition des weblink:


htmlCode {ShowGoogleMapsPosition(17,400,300,"rr_Detlef")}


MyUtils:

sub ShowGoogleMapsPosition($$$$) {
my ($zoom,$width,$height,$Resident) = @_;
$zoom='12' unless $zoom;
$width='740' unless $width;
$height='470' unless $height;
$lat= ReadingsVal ($Resident, "locationLat", "0");
$lng= ReadingsVal ($Resident, "locationLong", "0");

  my $htmlcode = "";

  $htmlcode .= "<script src='https://maps.googleapis.com/maps/api/js?v=3.exp'></script>";
  $htmlcode .= "<script>";
  $htmlcode .= "function initialize() {  ";
  $htmlcode .= "var myLatlng = new google.maps.LatLng(".$lat.",".$lng.");  ";
  $htmlcode .= "var mapOptions = {    ";
  $htmlcode .= "  zoom: ".$zoom.",    ";
  $htmlcode .= "  center: myLatlng  ";
  $htmlcode .= "};  ";
  $htmlcode .= "var map = new google.maps.Map(document.getElementById('map'), mapOptions);  ";
  $htmlcode .= "var marker = new google.maps.Marker({ ";
  $htmlcode .= "  position: myLatlng, ";
  $htmlcode .= "  title: 'Detlef', ";
  $htmlcode .= "}); ";
  $htmlcode .= "marker.setMap(map); ";
  $htmlcode .= "} ";
  $htmlcode .= "google.maps.event.addDomListener(window, 'load', initialize);    ";
  $htmlcode .= "</script>    ";
  $htmlcode .= "<div id='map' style='width:".$width."px;height:".$height."px;'></div>";
 
  return $htmlcode;
}


Gruß Detlef

Baumi

ZitatIch weiß warum ich programieren hasse. Solange es eine Hipath 4000 oder ein Cisco UCM ist gehts noch, aber dann...

Javascript wird aber auch von vielen Programmierern gehasst. ;)

Der Grund dafür, dass Du keine Fehlermeldungen gesehen hast, ist übrigens, dass die Browser die in einem Extra-Bereich verstecken, der Javascript-Konsole. Wo die zu finden ist, ist leider bei jedem Browser etwas anders, aber via Google müsstest Du das eigentlich auch für den Browser finden, den Du benutzt. Da hättest Du nämlich bei den "Der Bildschirm ist weiß"-Fehlern höchstwahrscheinlich Meldungen lesen können, die Dich schneller auf die richtige Spur gebracht hätten. (Ähnlich den Fehlern, die FHEM ausgibt, wenn ma es mit einer fehlerhaften MyUtils-Datei füttert.)

Masterfunk

Wo Du es sagst...

...da hab ich schlichtweg nicht dran gedacht. Wie ich die Konsole starte ist mir klar, aber ob es mir was genützt hätte... ;-=

Gruß Detlef

Loredo

Bei der Nutzung mit ROOMMATE oder GUEST gibt es in diesen Devices ab morgen einen neuen Setter "create locationMap", welcher ein entsprechendes Weblink Device anlegt (nutzt dafür die Google Maps Embed API). Das kann man hinterher nach belieben abändern.




Gruß
Julian
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Masterfunk

#22
Ja das hättest Du auch mal früher machen können.  ;) ;D

Gruß Detlef

Loredo

Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Hermann

Hallo,
Zitat von: Loredo am 17 Januar 2016, 17:39:01
Bei der Nutzung mit ROOMMATE oder GUEST gibt es in diesen Devices ab morgen einen neuen Setter "create locationMap", welcher ein entsprechendes Weblink Device anlegt (nutzt dafür die Google Maps Embed API). Das kann man hinterher nach belieben abändern.

Hallo, gibt es "create locationMap" noch ? Bei mir wird es aktuell nicht angeboten. Stand 31.01.16, fhem per update aktuell.

Hermann

Loredo

Gibt es. Wird aber nur angeboten, wenn die location Readings existieren. Ansonsten gibt es ja auch nix zum anzeigen ;-)
Man muss also erstmal ein Location Event generieren.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Hermann

Danke für die schnelle Antwort. Ich steh aber trotzdem auf dem Schlauch.
Ich dachte wenn bei  geofency folgende readings angezeigt werden reicht es ?

lastLocLat_Hermann
lastLocLong_Hermann

Die Variablen sind bei mir gefüllt. Verstehe ich etwas falsch ?

Hermann

Loredo

Das Feature ist ein ROOMMATE Feature, keines für GEOFANCY.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Hermann

Hallo,

Danke das Du nicht aufgibst. Das war mir schon klar das das zu roommate gehört. Lese ja die commandref über roommate rauf und runter :-(

"locationMap   add a pre-configured weblink device using showing a Google Map if readings locationLat+locationLong are present."

Ich hab bei roommate in der fhem config folgendens gesetzt: attr rr_Hermann rr_locationHome home

Leider immer nich keine locationLat....

Hermann

Loredo

du musst beim ROOMMATE Device in das Attribut rr_geofenceUUIDs die UUID deines mobilen Gerätes eintragen. Wie die ID lautet, steht bei einkommenden Events im GEOFANCY Device (dort steht was mit "... dev:87676-875-8756 ...". Die Nummer dahinter ist die UUID, die du im ROOMMATE Device eintragen musst, um ROOMMATE und GEOFANCY miteinander zu verknüpfen.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER