Javascript in VCL 4 the Web integrieren?
-
Hallo Community,
Ich habe folgendes anliegen.
ich habe mit VCL for the Web aus CodeGear RAD Studio 2009 C++ eine Application für den Browser geschrieben.Nun hätte ich gerne, dass diese Applikation die Koordinaten vom Browser abfrägt, wenn sie aufgerufen wird.
Dies geht zum Beispiel wenn jemand mit seinem iPhone diese seite öffnet.Mit Javascript und Geolocation ist dies möglich. ich habe bereits eine einfache HTML- Seite erstellt, auf der die Daten per Javascript abgefragt und ausgegeben werden. Gibt es auch überall im Netz zu finden.
Der Code Javascript
<script type="text/javascript"> var map; var geocoder; function initialize() { map = new GMap2(document.getElementById("map_canvas")); map.setCenter(new GLatLng(34, 0), 1); geocoder = new GClientGeocoder(); } function addAddressToMap(response) { map.clearOverlays(); if (!response || response.Status.code != 200) { alert("Sorry, we were unable to geocode that address"); } else { place = response.Placemark[0]; point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]); marker = new GMarker(point); map.setCenter(point, 13); map.addOverlay(marker); var addr = document.getElementById('address'); addr.firstChild.data = place.address; } } function showLocation() { var address = document.forms[0].q.value; geocoder.getLocations(address, addAddressToMap); } function findLocation(address) { document.forms[0].q.value = address; showLocation(); } if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(function(position) { s = position.coords.latitude+","+position.coords.longitude; document.forms[0].q.value = s; showLocation(); }); } else { alert("I'm sorry, but geolocation services are not supported by your browser."); } </script>
Nur jetzt möchte ich diesen Javascriptcode in meine VCL-Applikation packen.
nur wie?!Oder Gibt es ne andere Möglichkeit die Geodaten per VLC 4 the Web abzufragen?!
Danke
-
Also ich hab raus gefunden das man in den einzelenen Elementen wie eines IWButtons
ScriptEvents eingeben kann.
Hier muss das Javascript eingegeben werden.Nun is meine Frage, wie kann ich das Ergebnis dann auf ein Element des Formulars schreiben!?
-
Hab im internet bissl gestöbert und man soll es wie folgt machen.
Komponenten sollen mit dem Zusatz IWCL angesprochen werden.var s = "Test"; IWLabel1IWCL.caption = s;
Jedoch erhalt ich hier nie ein ergebnis wenn ich dies im Javascript ausführen lasse.
Hab auch schon probiert das ergebnis was ich in der Variable S habe in den Titel des Formulars zu schreiben mit
document.title = s;
dann steht beim aufruf auch der Inhalt der Variable s im Titel. Wenn ich jedoch im IntrawebFormular dann seinen Titel abfrage, erhalte ich einen leer String. bzw. den vorher gesetzten Titel.
Ich schaff es einfach nicht den einen String den ich im Javascript zusammenstelle an mein Intraweb Formular zu übergeben.
aber laut Dokumentation , die wenig bis schlecht ist, soll das gehen...
-
Probier mal wie in JavaScript üblich mit <Element>.value den Text zu ändern.
-
if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(function(position) { var s = position.coords.latitude+","+position.coords.longitude; IWLabel4.value= "Dreck"; }); }
Wird nicht ausgeführt oder zeigt keine Wirkung.
Habs probiert mitIWLabel4.value IWLabel4IWCL.value TIWLabel4.value TIWLabel4IWCL.value document.IWLabel4.value und so weiter
Wirkt sich alles nicht aus.
-
Wie dein Element bezeichnet wird müsstest du eigentlich schnell rausfinden können indem du dir den erzeugten Quelltext der HTML Seite anzeigen lässt.
-
der Tip war gold wert, Vielen Dank!
-
Ich hab ein neus Problem, das aber mehr mit Javascript als mit C++ zu tun hat.
Ich hab mein ScriptEvent ja vorher aufgeführt mit dem ich aus dem Browser die GeoDaten hole (Längen- Breitengrad)
Nun möchte ich diese in eine Adresse umwandeln.Auch hierführ gibts mit GeoCoder ne Funktion.
geocoder.getLocations(address, addAddressToMap);
function addAddressToMap(response) { map.clearOverlays(); if (!response || response.Status.code != 200) { alert("Sorry, we were unable to geocode that address"); } else { place = response.Placemark[0]; point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]); marker = new GMarker(point); map.setCenter(point, 13); map.addOverlay(marker); var addr = document.getElementById('address'); addr.firstChild.data = place.address; } }
Ich möchte nun meinen Längen und Breitengrad in eine Adresse umwandeln und diese dann aufs Formular schreiben.
Jedoch kommt mein Javascript nur soweit, das es die Geodaten aufs Formular schreibt und das wars.
Nach den Geodaten sollte es diese in eine Adresse umwandeln, jedoch passiert nichts.Nun ist die Frage, ist mein Javascriipt das ich in meine ScriptEvents getan habe falsch ?!
var geocoder; var map; var s; function initialize() { geocoder = new GClientGeocoder(); map = new GMap2(); } function addAddressToMap(response) { map.clearOverlays(); if (!response || response.Status.code != 200) { alert("Sorry, we were unable to geocode that address"); } else { place = response.Placemark[0]; point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]); marker = new GMarker(point); map.setCenter(point, 13); map.addOverlay(marker); alert( place.address); } } function showLocation() { geocoder.getLocations(s, addAddressToMap) } if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(function(position) { s = position.coords.latitude+","+position.coords.longitude; EDITGEOIWCL.value = s; showLocation(); }); } else { alert("Geolocation services wird von diesem Browser nicht unterstüzt."); } return false;
Oder benötige ich, wie auch auf meiner HTML-Seite mit angegeben, auf der es Funktioniert.
die Script Src von google ?
<script src="http://maps.google.com/maps?file=api&v=2&sensor=false &key=ABQIAAAA8JXb0YDVa4otOLnM95w50BSeC_rwpfX9fQb-nbMGMDH8BB4BVRTjxWS14T5WLZf7TpXaaAtk_SIb-Q" type="text/javascript"> </script>
nur wie binde ich diese in das ScriptEvent ein?!