Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Google Maps API (https://www.delphipraxis.net/153974-google-maps-api.html)

MiniMax 25. Aug 2010 10:13

AW: Google Maps API
 
danke ihr seit die besten!!!

MiniMax 25. Aug 2010 16:54

AW: Google Maps API
 
so habe jetztfast alles hinbekommen -- dank euch :thumb:
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);
}

Grolle 25. Aug 2010 18:18

AW: Google Maps API
 
Hallo,

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

Viele Grüße ...

MiniMax 25. Aug 2010 18:45

AW: Google Maps API
 
das bringt mich net weiter :?

Formuliere ich die frage mal anders: Wie kann ich einen Wert aus dem Javascript erhalten?

Grolle 25. Aug 2010 19:10

AW: Google Maps API
 
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 ...

MiniMax 26. Aug 2010 20:05

AW: Google Maps API
 
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.

MiniMax 27. Aug 2010 19:49

AW: Google Maps API
 
fehler gefunden und behoben
sorry für eure bemühungen :-D

Grolle 28. Aug 2010 07:44

AW: Google Maps API
 
Hi,

Zitat:

Zitat von MiniMax (Beitrag 1045603)
fehler gefunden

wo war er denn?

Viele Grüße ...

MiniMax 28. Aug 2010 08:55

AW: Google Maps API
 
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 :oops:
Kann man Irgendwie erreichen, wenn ich auf die map klicke, dass dann delphi aktiviert wird (onclick)?

MiniMax 29. Aug 2010 09:39

AW: Google Maps API
 
Keiner ne Idee?


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:02 Uhr.
Seite 2 von 3     12 3      

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