Hallo
Stefan, vielen Dank für das Lob!
Ich hoffe, Du konntest das Framework inzwischen etwas testen.
Vielen Dank an
Markus Delphi für das Testen unter Delphi 7 und die Hinweise dazu!
Vielen Dank auch an die
ADUG in Sydney, die es mir ermöglicht hat, per LiveMeeting an ihrem Treffen teilnehmen zu können! Das war für mich eine sehr interessante Erfahrung.
Einen besonderen Dank und viele Grüße an
AndreFM!
Auch an
Baoquan Zuo (Paul) aus Shanghai einen herzlichen Dank für die Lizenz zum
IDE-Plugin
Documentation Insight!
Die ersten 3 Units habe ich mit seiner Hilfe schon dokumentiert.
Bei so viel Interesse muss ich natürlich weitermachen. Deshalb folgt hier eine weitere Demo:
Beispiel 10
Nutzung eigener Bilder für die Darstellung der Karte
Ein interessanter Aspekt ist die Möglichkeit, das Google Maps
API für die Anzeige eigener Karten und Bilder zu verwenden. Damit stehen alle Möglichkeiten wie Zoom, Verschiebung, Marker, Info-Fenster und grafische Elemente zur Verfügung.
Wie wäre es, die Mondoberfläche darzustellen? Diese
Beispiel zeigt, wie es geht.
Doch wie kann das jetzt mit Delphi umgesetzt werden?
Um das Gesamtbild darstellen zu können, muss dem
API mitgeteilt werden, woher es die einzelnen Teile - die Bildkacheln - bekommt.
Dazu wird die Klasse TImageMapTypeOptions genommen, mit dessen Hilfe ein TImageMapType-Objekt erstellt wird.
Bei der Initialisierung der Optionen wird neben den Werten für die Größe der Bildkacheln unter anderem die Funktion
GetTileUrl festgelegt, die bei ihrem Aufruf die Koordinaten den angeforderten Kachel und die aktuelle Zoomstufe der Karte übergeben bekommt. Daraus muss sie eine
URL generieren, von der die benötigte Bildkachel geladen werden kann.
Praktisch sieht das so aus:
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
var
Map: TMap;
MapOptions: TMapOptions;
MoonMapTypeOptions: TImageMapTypeOptions;
MoonMapType: TImageMapType;
begin
//...
//Layer anlegen:
MoonMapTypeOptions:=TImageMapTypeOptions.Create;
//Options-Objekt anlegen
with MoonMapTypeOptions
do
begin
GetTileUrl:=self.GetTileUrl;
//Callback-Funktion zur Lieferung des Kartenausschnittes
TileSize:=Google.Maps.Size(256,256);
//Größe der einzelnen Bildkacheln
IsPng:=false;
//kein PNG-Bild
MaxZoom:=9;
MinZoom:=0;
Radius:=1738000;
Name:='
Moon';
//Layername
end;
MoonMapType:=Google.Maps.ImageMapType(MoonMapTypeOptions);
//Layer-Objekt anlegen
//Karte anlegen:
MapOptions:=TMapOptions.Create;
//Options-Objekt anlegen
with MapOptions
do
begin
Zoom:=1;
//Zoom
Center:=Google.Maps.LatLng(0,0);
//Kartenzentrum
MapTypeID:=Google.Maps.MapTypeId.Satellite;
//Kartentyp
MapTypeControlOptions.MapTypeIDs.Add('
moon');
//Layer der Karte zuweisen
StreetViewControl:=false;
//auf dem Mond spazieren gehen!? ;-)
end;
Map:=Google.Maps.Map(Document.GetElementById('
div_map'),
MapOptions);
//Karten-Objekt anlegen
Map.MapTypes.
Set('
moon',MoonMapType);
Map.SetMapTypeID('
moon');
//Layer anzeigen
//...
end;
function TForm1.GetTileUrl(Sender: TObject; Point: TPoint; Zoom: Integer):
String;
begin
//URL für Point unter Berücksichtigung von Zoom zusammenstellen
Result:=...;
end;
Compilierte Exe: