Hallo,
ich bin zur Zeit dabei GoogleMaps etwas zu verstehen. Grundsätzlich funktioniert es, wenn ich eine Datei erstelle und die per Web-Browser aufrufe:
Es funktioniert aber nicht, wenn ich eine Variable vom Typ String / ~HTMLBox fülle; die HTML-Box ist in der Web-Visualisierung leer.
In /var/log/symcon/logfile.log gibt es keine Fehlermeldung.
Der untenstehende Code ist möglichst vereinfacht. der Inhalt steht sei auch in der Variablen und wird mit den üblichen Browsern (Safari, Chrome, Firefox) dargestellt, wenn ich diesen HTML-Code in eine Datei packen.
Das ist der Code einer Test-Funktion zum Füllen der Variablen
<?
$html = '
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0; padding: 0 }
#map-canvas { height: 100% }
</style>
<title>GoogleMaps</title>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBGNKlClhEx_-_GZFFQNcBvH_H_xfqv3_0"></script>
<script type="text/javascript">
var locations = [
{ "lat": 51.46088167, "lng": 7.15859000, info: "akt. Position" },
{ "lat": 51.46086333, "lng": 7.15856667 },
{ "lat": 51.46085333, "lng": 7.15857167 },
{ "lat": 51.46086500, "lng": 7.15856500 },
];
var origin = new google.maps.LatLng(51.46088167, 7.15859000);
var map;
var infowindow;
function initialize() {
var mapOptions = {
center: origin,
zoom: 20,
tilt: 0,
mapTypeId: "satellite"
};
var infowindowOptions = {
maxWidth: 200
};
map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
infowindow = new google.maps.InfoWindow();
for(i=0; i<locations.length; i++) {
var position = new google.maps.LatLng(locations[i]["lat"], locations[i]["lng"]);
var marker = new google.maps.Marker({
position: position,
map: map,
});
google.maps.event.addListener(marker, "click", (function(marker, i) {
return function() {
if (locations[i]["info"]) {
infowindow.setContent(locations[i]["info"]);
infowindow.setOptions(infowindowOptions);
infowindow.open(map, marker);
}
}
}) (marker, i));
}
}
</script>
</head>
<body onload="initialize()">
<div id="map-canvas" />
</body>
</html>
';
SetValueString(29817 /*[GoogleMaps\Karte]*/ /*[GoogleMaps\Karte]*/, $html);
Ich habe schon einiges geändert aber ich komme nicht drauf, was ich ändern muss.
Wenn ich im Body eine Ausgabe mache
...
<body onload="initialize()">
<div id="map-canvas" />
TEST
</body>
erscheint „TEST“ in der Anzeige. Es ist also vermutlich ein Problem des Aufrufs der ‚initialize‘-Funktion.
Ein Versuch war, das „onload“ anders auszudrücken …
...
google.maps.event.addDomListener(window, "load", initialize);
</script>
</head>
<body>
<div id="map-canvas"/>
</body>
</html>
kein Erfolgt…
Ich muss gestehen, das in in Web-Darstellungen, besonders in der HTML-Box wenig Kenntnisse habe.
Ich habe einen älteren Post gefunden, der relativ ähnlich ist (IP-Symcon Community Forum). Wenn ich den hier gezeigten Code nehmen, funktioniert’s aber leider auch nicht.
<?
$html = '
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Standortbestimmung</title>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
function initialize() {
var latlng = new google.maps.LatLng(51.46088167, 7.15859000);
var myOptions = {
zoom: 15,
center: latlng,
mapTypeId: "satellite"
}
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var marker = new google.maps.Marker({
position: latlng,
map: map,
title:"satellite"
});
}
</script>
</head>
<body onload="initialize()">
<div id="map_canvas" style="height: 100%;"></div>
</body>
</html>
';
SetValueString(29817 /*[GoogleMaps\Karte]*/, $html);
Die IPS-Version 4.4
Ist wahrscheinlich ein falscher Ansatz von mir, von daher würde ich mich über eine Hilfe freuen.
Danke
demel