![]() |
Delphi XE8 Maps Marker Generieren
Liste der Anhänge anzeigen (Anzahl: 2)
Arbeite seit einiger Zeit an einer Logistik Applikation. Mit Delphi XE8 und TMS Maps.
Funktionier eigentlich wunderbar, habe aber ein Hindernis mit im Programm generierten Marker Die Marker generiere ich mit dem hier beschriebenem Beispiel: ![]() Die Schwierigkeit mit der ich Kämpfe ist die Marker werden wie gewünscht erstellt nur dass ich jeweils ein Weisses Rechteck um die Marker habe. Siehe Bild im Anhang. Vielleicht kann mir jemand eine Typ geben wich diese weisse Fläche transparent machen könnte. Vielen Dank schon mal im Voraus HeWy |
AW: Delphi XE8 Maps Marker Generieren
Ich arbeite nicht mit TMS Maps, dort sollte es aber ein AfterDraw geben, benutzt Du dies zum zeichnen ?
Delphi-Quellcode:
procedure TForm1.WebOSMaps1AfterDraw(Sender: TObject; ACanvas: TCanvas);
var MarkerPoint: TPoint; begin // Perform custom drawing here MarkerPoint := WebOSMaps1.LatLngToScreen(PointLatLng(37.7749, -122.4194)); // Adjust the coordinates as needed // Draw a custom marker shape ACanvas.Brush.Color := clRed; ACanvas.Pen.Color := clBlack; ACanvas.Pen.Width := 2; ACanvas.Ellipse(MarkerPoint.X - 10, MarkerPoint.Y - 10, MarkerPoint.X + 10, MarkerPoint.Y + 10); // Draw custom text ACanvas.Font.Size := 12; ACanvas.Font.Style := [fsBold]; ACanvas.Font.Color := clWhite; ACanvas.TextOut(MarkerPoint.X - 5, MarkerPoint.Y - 5, 'Custom Marker'); end; |
AW: Delphi XE8 Maps Marker Generieren
Danke Rollo64 für deine Hinweis, Bei TMS gibt es zwar ein on AfterDraw allerdings wird dies nur einmal aufgerufen beim Erstellen der Karte. Also ist es nicht das muss mal schauen ob es sowas für das Zeichnen der Marker gibt. Da der weisse Hintergrund bei meinem Marker die einzige Unschönheit ist mit der ich aktuell herum übe will ich doch versuchen dies transparent zu machen.
Vieleicht findet sich doch noch eine Lösung für die Transparenz. |
AW: Delphi XE8 Maps Marker Generieren
Nur mal geraten: Wenn dem so ist, vielleicht hilft dann ein Refresh oder Repaint oder ähnlich um das Neuzeichnen zu Triggern, falls es das bei den TMS Maps gibt.
|
AW: Delphi XE8 Maps Marker Generieren
Nun ja geht mit onDraw nicht, die Transparency muss wirklich der Marker Graphik mitgegeben werden, da der Marker als eigene Graphik in einem Owerlay angezeigt wird und daher nicht direkter Bestandteil der Karten Graphik ist.
Aus dem gezeichneten Marker mache ich einen Base64 String kenne mich da nicht wirklich aus aber mal sehen vielleicht kann ich in diesem String vor der Übergabe zum Darstellen die Transparenten Flächen (Farbe) noch konvertieren. |
AW: Delphi XE8 Maps Marker Generieren
Nja, irgendwas muß dabei als "transparent" erkannt werden.
* das könnte eine bestimmte Farbe sein, * aber auch die Farbe eines bestimmten Pixels (die erste Ecke) * oder z.B. ein AlphaKanals in der Farbe (32 Bit-Farbe) Was nun aber für dieses Overlay verwendet wird, das sollte doch bestimmt in der Doku stehen? |
AW: Delphi XE8 Maps Marker Generieren
Liste der Anhänge anzeigen (Anzahl: 1)
Danke für deinen Hint Himitsu,
ich übergebe einen Base64 String was auch einwandfrei funktioniert. TMS Maps Zeichnet einfach das was übergeben wird. Übergebe ich base64 Strings, die ich mit einem separaten Graphik Programm erstellte und darin den gewünschten Bereich Transparent mache dann ist die Darstellung so wie gewünscht. Generiere ich die Marker mit der beigefügten Funktion (Siehe Anlage) fehlt der Transparente Teil und dieser wird dann leider weiss oder was auch immer ich definiere dargestellt. Also meine Frage wie bekomme ich meine Funktion ‘GenerateMarker’ Marker so hin dass die Blauen Marker den Weissen Bereich transparent macht? Siehe Anhang: Blaue Ist Gelbe Soll |
AW: Delphi XE8 Maps Marker Generieren
Das Bast64 ist vollkommen irrelevant, gegenüber einer binären Übergabe.
Die Übergabe per se funktioniert ja schließlich. Es kommt also auf das drauf an, was als Daten übergeben wird. ImageTyp und das Format. Du wirst ja wohl nicht auf eine PaintBox malen. Was für ein Typ hat das Bild und in welchem Format wird das Bild gespeichert. TPngImage, TBitmap, TJPEGImage, ... und beim Bitmap z.B. die Farbtiefe/Bits (16, 24, 32 und wie sie interpretiert werden, ala AlphaKanal) oder ob es zusätzlich eine BitMaks gibt. |
AW: Delphi XE8 Maps Marker Generieren
Brush.Style := bsClear;
|
AW: Delphi XE8 Maps Marker Generieren
Liste der Anhänge anzeigen (Anzahl: 1)
Ok habe das Ganze meiner Meinung nach auf das notwendige Minimum reduziert.
Bekomme aber immer noch die vollen Hintergrund Flächen möchte alles was clFuchsia ist transparent haben.
Delphi-Quellcode:
Function tMarkerUtils.GenerateTriMarker(aColor: tColor): string;
var MarkerImage: TImage; TransparentColor: TColor; Points: array of TPoint; begin MarkerImage:= TImage.Create(nil); try MarkerImage.Width:= 55; MarkerImage.Height:= 30; MarkerImage.Picture:=nil; TransparentColor := clFuchsia; // Background color MarkerImage.Canvas.Brush.Style := bsClear; MarkerImage.Canvas.Brush.Color:= TransparentColor; MarkerImage.Picture.Bitmap.TransparentColor := TransparentColor; MarkerImage.Picture.Bitmap.Transparent:= true; MarkerImage.Canvas.FillRect(Rect(0, 0, MarkerImage.Width, MarkerImage.Height)); SetLength(Points, 3); Points[0] := Point(5, 5); Points[1] := Point(35, 5); Points[2] := Point(20, 20); MarkerImage.Canvas.Pen.Width := 2; MarkerImage.Canvas.Pen.Color := clBlack; MarkerImage.Canvas.Brush.Color := aColor; MarkerImage.Canvas.Polygon(Points); Result:= GetBase64Image(MarkerImage); finally MarkerImage.Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz