AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Delphi [Android] Maps Marker ressource schonend laden/verwalten??
Thema durchsuchen
Ansicht
Themen-Optionen

[Android] Maps Marker ressource schonend laden/verwalten??

Ein Thema von BBoy · begonnen am 30. Sep 2016 · letzter Beitrag vom 4. Okt 2016
 
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#1

[Android] Maps Marker ressource schonend laden/verwalten??

  Alt 30. Sep 2016, 10:23
Ich verwende eine Tmaps Karte und lade Marker hinzu aus einer Datenbank.
Derzeit bin ich bei etwa 300 Markern und merke schon wie die App in die Knie geht, also ruckelt... es dauert immer länger bis die Marker geladen sind je mehr es sind. Der normale betrieb der App ist kein Problem aber das Laden macht Probleme.
Wende ich dann einen Filter an, macht sich das richtig bemerkbar.

Ich habe eine ähnliche App aus dem Markt und dort kann man viele hundert Marker einladen ohne das sich das irgendwie bemerkbar macht.

Habt ihr ein paar Tipps was ich tun kannn damit das bei meiner App auch funktioniert?

Hier mal meine Prozedur um die Datenbank zu lesen:
Code:
// Datenbank lesen
procedure TTabbedwithNavigationForm.read_database;
var
  lat, lon : String;
  Position: TMapCoordinate;
begin
  sqlquery1.SQL.Clear;
  SQLQuery1.SQL.Text := 'SELECT * FROM p_marker ORDER BY Min';
  SQLQuery1.Active := true;
  SQLQuery1.First;
  while not SQLQuery1.Eof do begin
    if not SQLQuery1.IsEmpty then begin
      lat := sqlquery1.FieldByName('Lat').Asstring;
      lon := sqlquery1.FieldByName('Lon').Asstring;
      lat := stringreplace(lat,'.',',',[rfReplaceAll]);
      lon := stringreplace(lon,'.',',',[rfReplaceAll]);
      position.Latitude := strtofloat(lat);
      position.Longitude:= strtofloat(lon);

      maxtime := sqlquery1.FieldByName('Min').AsInteger +20;
       if maxtime >60  then
         maxtime := maxtime -60;

      mapview1.BeginUpdate;
      MyMarker := TMapMarkerDescriptor.Create(Position, sqlquery1.FieldByName('Name').Asstring+' :'+format('%.2d',[sqlquery1.FieldByName('Min').Asinteger])+'-'+format('%.2d',[maxtime]));
        MyMarker.Draggable := False;

      if sqlquery1.FieldByName('Type').AsString ='bl' then
          MyMarker.Icon := Image1.Bitmap;
        if sqlquery1.FieldByName('Type').AsString ='rd' then
          MyMarker.Icon := Image2.Bitmap;
        if sqlquery1.FieldByName('Type').AsString ='blu' then
          MyMarker.Icon := Image3.Bitmap;
        if sqlquery1.FieldByName('Type').AsString ='ye' then
          MyMarker.Icon := Image4.Bitmap;
        MyMarker.Visible :=True;
        Fmarkers.Add(MapView1.AddMarker(MyMarker));
        sqlquery1.Next;
    end;
  end;
    mapview1.EndUpdate;
end;
mapview.beginupdate bringt leider nicht den gewünschten erfolg ähnlich bei grid's .
  Mit Zitat antworten Zitat
 


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 07:48 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