AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Google Maps API

Ein Thema von MiniMax · begonnen am 23. Aug 2010 · letzter Beitrag vom 29. Aug 2010
Antwort Antwort
Seite 2 von 3     12 3      
MiniMax

Registriert seit: 15. Dez 2009
Ort: Bremen
193 Beiträge
 
Delphi 2009 Architect
 
#11

AW: Google Maps API

  Alt 25. Aug 2010, 10:13
danke ihr seit die besten!!!
Gruß
MiniMax
  Mit Zitat antworten Zitat
MiniMax

Registriert seit: 15. Dez 2009
Ort: Bremen
193 Beiträge
 
Delphi 2009 Architect
 
#12

AW: Google Maps API

  Alt 25. Aug 2010, 16:54
so habe jetztfast alles hinbekommen -- dank euch
nun noch ne frage: Wie kann ich einen Marker per klick setzen und dann dieKoordinatenauslesen?

habe den code zwar gefunden, weiß aber net wie ich "location" an delphi übergebe?
Ich bitte nochma um Hilfe

Danke im vorraus

minimax

----------------

Code:
var map;
function initialize() {
  var myLatlng = new google.maps.LatLng(-25.363882,131.044922);
  var myOptions = {
    zoom: 4,
    center: myLatlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  }
  map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
 
  google.maps.event.addListener(map, 'click', function(event) {
    placeMarker(event.latLng);
  });
}
 
function placeMarker(location) {
  var clickedLocation = new google.maps.LatLng(location);
  var marker = new google.maps.Marker({
      position: location,
      map: map
  });

  map.setCenter(location);
}
Gruß
MiniMax
  Mit Zitat antworten Zitat
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#13

AW: Google Maps API

  Alt 25. Aug 2010, 18:18
Hallo,

habe ich selber noch nie gebraucht, aber schau mal hier ...

Viele Grüße ...

  Mit Zitat antworten Zitat
MiniMax

Registriert seit: 15. Dez 2009
Ort: Bremen
193 Beiträge
 
Delphi 2009 Architect
 
#14

AW: Google Maps API

  Alt 25. Aug 2010, 18:45
das bringt mich net weiter

Formuliere ich die frage mal anders: Wie kann ich einen Wert aus dem Javascript erhalten?
Gruß
MiniMax
  Mit Zitat antworten Zitat
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#15

AW: Google Maps API

  Alt 25. Aug 2010, 19:10
Hallo,

du musst execScript verwenden, um mit dem TWebBrowser eine JS Funktion auszuführen. Diese kann aber nix an Delphi zurückgeben. Lies dir dazu mal den Absatz auf der oben verlinkten Seite (Getting the Return Value) genauer durch.

Viele Grüße ...

  Mit Zitat antworten Zitat
MiniMax

Registriert seit: 15. Dez 2009
Ort: Bremen
193 Beiträge
 
Delphi 2009 Architect
 
#16

AW: Google Maps API

  Alt 26. Aug 2010, 20:05
das war ein guter tipp, aber ich hänge schon wieder:

Es kommt einfach kein wert raus (es soll die gecklickte koordinaten ausgegeben werden):

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, SHDocVw, StdCtrls, ExtCtrls, XPMan, ComCtrls,MSHTML;

type
  TForm1 = class(TForm)
    XPManifest1: TXPManifest;
    CheckBoxTraffic: TCheckBox;
    WebBrowser1: TWebBrowser;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure CheckBoxTrafficClick(Sender: TObject);
    procedure WebBrowser1UpdatePageStatus(ASender: TObject;
      const pDisp: IDispatch; var nPage, fDone: OleVariant);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
     HTMLWindow2: IHTMLWindow2;

  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation
uses
ActiveX;


{$R *.dfm}


const
HTMLStr : ansiString =
'<html> '+
'<head> '+
'<input type="hidden" id="result" value="" />'+
'<meta name="viewport" content="initial-scale=1.0, user-scalable=yes" /> '+
'<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script> '+
'<script type="text/javascript"> '+
''+
''+
' var geocoder; '+
' var map; '+
' var trafficLayer;'+
' var bikeLayer;'+
''+
''+




' function initialize() { '+
' geocoder = new google.maps.Geocoder();'+
' var latlng = new google.maps.LatLng(40.714776,-74.019213); '+
' var myOptions = { '+
' zoom: 13, '+
' center: latlng, '+
'mapTypeControl: true,'+
' mapTypeControlOptions: { '+
' style: google.maps.MapTypeControlStyle.DROPDOWN_MENU '+
' },'+
' navigationControl: true,'+
' navigationControlOptions: { '+
' style: google.maps.NavigationControlStyle.ZOOM_PAN'+
' },'+

' mapTypeId: google.maps.MapTypeId.ROADMAP '+
' }; '+

' map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); '+
' trafficLayer = new google.maps.TrafficLayer();'+
' bikeLayer = new google.maps.BicyclingLayer();'+
' google.maps.event.addListener(map, "click", function(event) {'+
' placeMarker(event.latLng);'+
' });'+

' } '+
''+
''+

'function placeMarker(location) { '+
' var clickedLocation = new google.maps.LatLng(location);'+
' var marker = new google.maps.Marker({ '+
' position: location,'+
' map: map'+
' });'+
''+
' map.setCenter(location);'+
'document.getElementById("result").value = location;'+
'}'+

''+
''+
' function codeAddress(address) { '+
' if (geocoder) {'+
' geocoder.geocode( { address: address}, function(results, status) { '+
' if (status == google.maps.GeocoderStatus.OK) {'+
' map.setCenter(results[0].geometry.location);'+
' var marker = new google.maps.Marker({'+
' map: map,'+
' position: results[0].geometry.location'+
' });'+
' } else {'+
' alert("Geocode was not successful for the following reason: " + status);'+
' }'+
' });'+
' }'+
' }'+
''+
''+
' function GotoLatLng(Lat, Lang) { '+
' var latlng = new google.maps.LatLng(Lat,Lang);'+
' map.setCenter(latlng);'+
' var marker = new google.maps.Marker({'+
' position: latlng, '+
' map: map,'+
' title:Lat+","+Lang'+
' });'+
' }'+
''+
''+
' function TrafficOn() { trafficLayer.setMap(map); }'+
''+
' function TrafficOff() { trafficLayer.setMap(null); }'+
''+''+
' function BicyclingOn() { bikeLayer.setMap(map); }'+
''+
' function BicyclingOff(){ bikeLayer.setMap(null);}'+
''+
' function StreetViewOn() { map.set("streetViewControl", true); }'+
''+
' function StreetViewOff() { map.set("streetViewControl", false); }'+
''+
''+'</script> '+
'</head> '+
'<body onload="initialize()"> '+
' <div id="map_canvas" style="width:100%; height:100%"></div> '+
'</body> '+
'</html> ';


function GetElementIdValue(WebBrowser: TWebBrowser;
  TagName, TagId, TagAttrib: string):string;
var
  Document: IHTMLDocument2;
  Body: IHTMLElement2;
  Tags: IHTMLElementCollection;
  Tag: IHTMLElement;
  I: Integer;
begin
  Result:='';
  if not Supports(WebBrowser.Document, IHTMLDocument2, Document) then
    raise Exception.Create('Invalid HTML document');
  if not Supports(Document.body, IHTMLElement2, Body) then
    raise Exception.Create('Can''t find <body> element');
  Tags := Body.getElementsByTagName(UpperCase(TagName));
  for I := 0 to Pred(Tags.length) do begin
    Tag:=Tags.item(I, EmptyParam) as IHTMLElement;
    if Tag.id=TagId then Result := Tag.getAttribute(TagAttrib, 0);
  end;
end;



procedure TForm1.Button1Click(Sender: TObject);
begin
Showmessage(GetElementIdValue(WebBrowser1, 'input', 'result', 'value'));
end;

procedure TForm1.CheckBoxTrafficClick(Sender: TObject);
begin
    if CheckBoxTraffic.Checked then
     HTMLWindow2.execScript('TrafficOn()', 'JavaScript')
    else
     HTMLWindow2.execScript('TrafficOff()', 'JavaScript');
 end;

procedure Tform1.FormCreate(Sender: TObject);
var
  aStream : TMemoryStream;
begin
   WebBrowser1.Navigate('about:blank');
    if Assigned(WebBrowser1.Document) then
    begin
      aStream := TMemoryStream.Create;
      try
         aStream.WriteBuffer(Pointer(HTMLStr)^, Length(HTMLStr));
         //aStream.Write(HTMLStr[1], Length(HTMLStr));
         aStream.Seek(0, soFromBeginning);
         (WebBrowser1.Document as IPersistStreamInit).Load(TStreamAdapter.Create(aStream));
      finally
         aStream.Free;
      end;
      HTMLWindow2 := (WebBrowser1.Document as IHTMLDocument2).parentWindow;
      //HTMLWindow2.execScript('mode()', 'JavaScript')
    end;


end;


procedure TForm1.WebBrowser1UpdatePageStatus(ASender: TObject;
  const pDisp: IDispatch; var nPage, fDone: OleVariant);
begin
Showmessage(GetElementIdValue(WebBrowser1, 'input', 'result', 'value'));
end;

end.
Gruß
MiniMax
  Mit Zitat antworten Zitat
MiniMax

Registriert seit: 15. Dez 2009
Ort: Bremen
193 Beiträge
 
Delphi 2009 Architect
 
#17

AW: Google Maps API

  Alt 27. Aug 2010, 19:49
fehler gefunden und behoben
sorry für eure bemühungen
Gruß
MiniMax
  Mit Zitat antworten Zitat
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#18

AW: Google Maps API

  Alt 28. Aug 2010, 07:44
Hi,

fehler gefunden
wo war er denn?

Viele Grüße ...

  Mit Zitat antworten Zitat
MiniMax

Registriert seit: 15. Dez 2009
Ort: Bremen
193 Beiträge
 
Delphi 2009 Architect
 
#19

AW: Google Maps API

  Alt 28. Aug 2010, 08:55
ich habe den input der auf hidden steht in den head tag gesetzt und dort kann er nur im visible zustand ausgelesen werden. Nunhabe ich ihn in den body tag gesetzt und evoilla es geht auch im hidden zustand!

Nur nun ne Frage
Kann man Irgendwie erreichen, wenn ich auf die map klicke, dass dann delphi aktiviert wird (onclick)?
Gruß
MiniMax
  Mit Zitat antworten Zitat
MiniMax

Registriert seit: 15. Dez 2009
Ort: Bremen
193 Beiträge
 
Delphi 2009 Architect
 
#20

AW: Google Maps API

  Alt 29. Aug 2010, 09:39
Keiner ne Idee?
Gruß
MiniMax
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:31 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