Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   GPS-Daten aus Browser auslesen (https://www.delphipraxis.net/188492-gps-daten-aus-browser-auslesen.html)

mm1256 9. Mär 2016 14:46

GPS-Daten aus Browser auslesen
 
Hallo,

ich bin nun schon eine Weile auf der Suche und am Probieren, komme aber nicht weiter. Dabei wäre das was ich brauche eigentlich gar nicht so kompliziert: Der Anwender soll in einem modalen Dialog (Windows-App, VCL) auf einer Landkarte einen Standort auswählen und daraufhin möchte ich den ausgewählten Längen- und Breitengrad speichern. Der Ansatz war, einen TWebBrowser auf eine Form, und dann über "WebBrowser.OleObject.document.forms.item(..)" den Inhalt auslesen. Das funktioniert aber nicht, weil die Seiten http://gpso.de/maps/ und http://www.gpskoordinaten.de/ die ich ausprobiert habe logischerweise Javascript verwenden, und die TWebBrowser-Komponente offensichtlich nicht damit klar kommt. Es gibt ständig Fehlermeldungen bei der Script-Ausführung.

Kann man daran was tun oder was läuft da falsch? Oder ist das eine Einschränkung dieser Komponente und ich bin auf dem Holzweg? Oder gibt es "bessere" Seiten?

Die Alternative wäre dann vielleicht, die Webseite im Standard-Browser zu öffnen, und dann die Felder auszulesen. Doch, wie macht man das (z.B. die Felder aus Firefox auslesen)? Und vor allem, wie bekomme ich in diesem Fall mit, dass der Anwender eine Auswahl getroffen hat? Vielleicht hat ja jemand einen Link oder einen Tipp der mich weiter bringt.

Bambini 9. Mär 2016 15:36

AW: GPS-Daten aus Browser auslesen
 
Zitat:

Zitat von mm1256 (Beitrag 1332457)
Vielleicht hat ja jemand einen Link oder einen Tipp der mich weiter bringt.

DevExpress hat eine Maps-Komponente dafür: https://www.devexpress.com/Products/VCL/ExMapControl

mm1256 9. Mär 2016 17:39

AW: GPS-Daten aus Browser auslesen
 
Danke für den Tipp. Für DevExpress konnte ich mich bisher nicht so begeistern. Wer kauft schon wegen einem Liter Milch einen ganzen Bauernhof. Bin gerade bei TMS (WebGMaps) an Probieren. Sieht eigentlich ganz chic aus :thumb:

Neutral General 9. Mär 2016 17:47

AW: GPS-Daten aus Browser auslesen
 
Es gäbe auch noch das hier:

http://www.delphipraxis.net/157004-g...ect-model.html

Reicht das nicht?

Bambini 9. Mär 2016 17:55

AW: GPS-Daten aus Browser auslesen
 
Zitat:

Zitat von Neutral General (Beitrag 1332482)
Reicht das nicht?

So wie ich ihn verstanden habe will er an die Click's und Koordinaten auf der Karte ran.
Da das alles ziemlich JavaScript lastig ist und sehr stark in Bewegung, könnte das sehr schwierig oder unmöglich werden.

Der Milchvergleich passt!
Die Preis Politik ist bei DevExpress sehr fragwürdig. Die Komponenten sind aber sehr gut.

Neutral General 9. Mär 2016 17:58

AW: GPS-Daten aus Browser auslesen
 
Zitat:

Zitat von Bambini (Beitrag 1332486)
Zitat:

Zitat von Neutral General (Beitrag 1332482)
Reicht das nicht?

So wie ich ihn verstanden habe will er an die Click's und Koordinaten auf der Karte ran.

Habe selbst schon die Google Maps API benutzt in einem Delphi Programm (die Webbrowser + Javascript Version, ohne den oben geposteten Link) und da wäre sowas auf jeden Fall möglich.

mm1256 9. Mär 2016 18:25

AW: GPS-Daten aus Browser auslesen
 
Hallo,

erst mal vielen Dank für die bisherigen Beiträge. Mein Problem ist halt, dass ich Autodidakt bin, und in manchen Dingen nicht so tief drin stecke, wie ein gelernter Informatiker. Wenn's kompliziert wird, dann muss ich eben manchmal passen, und auf fremde Hilfe zurück greifen. Darum: Bevor ich mich tagelang mit einer API rum schlage, greife ich lieber zu einer Komponente.

Die Kuh von DevExpress ist vom Eis. Ich habe schon von LMD und TMS einen Sack voll Komponenten, wovon ich nur eine Handvoll benutze, da muss ich mir die über 1000 Euronen wegen einer einzigen Komponente nicht antun.

Aber, die "TMS WebGMaps" Demo die ich gerade noch teste, sieht sehr gut aus. Macht alles (und noch viel mehr) was ich brauche und ist mit 95 Euronen auch erschwinglich. Das wird es wahrscheinlich werden. :thumb:

Bambini 9. Mär 2016 21:01

AW: GPS-Daten aus Browser auslesen
 
Zitat:

Zitat von Neutral General (Beitrag 1332487)
Zitat:

Zitat von Bambini (Beitrag 1332486)
Zitat:

Zitat von Neutral General (Beitrag 1332482)
Reicht das nicht?

So wie ich ihn verstanden habe will er an die Click's und Koordinaten auf der Karte ran.

Habe selbst schon die Google Maps API benutzt in einem Delphi Programm (die Webbrowser + Javascript Version, ohne den oben geposteten Link) und da wäre sowas auf jeden Fall möglich.

Hast du da einen Tipp/Link, wie man mit Delphi/TWebBrowser, Daten mit JavaScript austauschen kann?

Neutral General 9. Mär 2016 23:32

AW: GPS-Daten aus Browser auslesen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

(Post nochmal komplett überarbeitet:)

Ich habe mal eine Unit erstellt mit der man Javascript-Funktionen aufrufen kann.
Man kann sogar Delphi-Funktionen als Callback mitgeben:
Delphi-Quellcode:
uses
  RemoteJS;

type
  // Funktionen die man als Callback übergeben will müssen von TJavascriptFunction abgeleitet werden
  TAddFunc = class(TJavascriptFunction)
    function Call(AParams: Array of OleVariant): OleVariant; override;
  end;

function TAddFunc.Call(AParams: array of OleVariant): OleVariant;
begin
  if (Length(AParams) >= 2) then
    Result := AParams[0] + AParams[1]
  else
    Result := Unassigned;
end;

procedure TForm1.Button1Click(Sender: TObject);
var f: IDispatch;
begin
  doc := WebBrowser1.Document as IHTMLDocument2;
 
  // Aufruf einer Funktion in JS, Ergebnis wird in res gespeichert und ausgegeben
  res := InvokeJS(doc.Script, 'ScriptAdd(a,b)', [2.4, 3.8]);
  ShowMessage(res);

  // Aufruf der Funktion CallbackAdd.
  // Als parameter wird unsere AddFunc übergeben die aus CallbackAdd heraus aufgerufen wird
  f:= TAddFunc.Create();
  res := InvokeJS(doc.Script, 'CallbackAdd(f)', [f]);
end;
Die dazugehörige Beispiel-HTML:
Code:
<html>
<head>
    <script>
        function ScriptAdd(a,b) {
            return a+b;
        }

        function CallbackAdd(f) {
            alert(f(12, 1)); // sollte 13 ausgeben
        }
    </script>
</head>
<body>
</body>
</html>
Damit sollte der Kommunikation zwischen JS und Delphi eigentlich nichts mehr im Wege stehen :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz