Composant Delphi / Google Maps / OpenStreetMap / Leaflet  / Mappilary / Native Maps 100% Delphi 0% WebBrowser 0% Javascript

Mode hors-ligne

Vous êtes ici :TECNativeMap

Les tuiles sont d'abord recherchées dans le cache mémoire (les tuiles affichées il y a peu), le cache local, l'archive locale puis sur internet si besoin.

Cache local

En attribuant un répertoire à la propriété LocalCache les tuiles téléchargées depuis internet sont enregistrées en local et sont disponibles hors connexion.

Fig. 71 My local tiles

Utilisez la propriété MaxDayInCache pour spécifier la durée de retention dans le cache, par défaut 30 jours.

map.MaxDayInCache := 7; // max 7 days

Archive Locale

Une archive locale correspond au cache local mis dans un Zip, cela simplifie le déploiement des tuiles et des autres fichiers.


Pour améliorer la vitesse les tuiles sont extraites de l'archive et placées dans le cache locale lors de la première demande, vous devez donc définir un cache local pour utiliser une archive.

Fig. 72 Archive ile de ré

map.LocalCache := TPath.Combine(TPath.GetSharedDocumentsPath, 'cache');
map.TileServer := tsOSM;
map.LocalArchive := ExtractfilePath(ParamStr(0))+'ile_de_re.zip';

Si des routes ou des géolocations d'adresses sont enregistrées dans l'archive la récupération est totalement transparente

64
map.Routing.engine(reMapBox);
// if an archive is connected and contains the route, no internet connection is made to return the way
map.Routing.Request('saint-martin de ré', 'la couarde sur mer');

Vous pouvez y stocker vos images ou des fichiers de données (kml, geojson etc...), pour les charger il suffira de faire débuter le nom du fichier par /

// load data
map.Shapes.LoadFromFile('/DATA/tdf.kml');
map.LoadFromFile('/DATA/tarbes.txt');
// load image in marker
marker.filename := '/IMAGE/node.png';

Utilisez MapArchive pour manipuler directement votre archive et extraire vos autres données.

m := TMemoryStream.Create;
try

map.MapArchive.ReadStream('DATA/mydata.txt',m);

memo1.Lines.LoadFromStream(m);

finally
m.Free;
end;

MapArchiveCreator

Ce petit utilitaire permet de créer vos archives, vous pouvez télécharger des zones de tuiles, enregistrer des routes, ajouter des images et des fichiers.

Fig. 73 MapArchiveCreator

Vous pouvez interdire toute connexion internet pour les tuiles et le geocodage en utilisant la propriété OnlyLocal

65
// tiles and geocoding only uses local cache and local archive
map.onlyLocal := true;

Téléchager une zone complète

La classe TECDownLoadTiles vous permet de télécharger en arrière-plan une zone complète, la demo EcNativeMapFiremonkeyDemo vous montre comment précharger la zone visible à l'écran.

FECDownLoadTiles:=TECDownLoadTiles.create;

FECDownLoadTiles.OnDownLoad := doDownLoadtiles;
FECDownLoadTiles.OnEndDownLoad := doEndDownLoadtiles;

// tiles are saved in DirectoryTiles
FECDownLoadTiles.DirectoryTiles := map.LocalCache;

FECDownLoadTiles.TileServer := map.TileServer;
FECDownLoadTiles.TileSize := map.TileSize;

// download visible area from zoom+1 to MaxZoom

FECDownLoadTiles.DownLoadTiles(map.Zoom+1,map.MaxZoom,
map.NorthEastLatitude,map.NorthEastLongitude,
map.SouthWestLatitude,map.SouthWestLongitude);

...


// for abort
FECDownLoadTiles.Cancel;

// see ECNativeMapFiremokeyDemo for complete use

Assurez-vous que votre fournisseur de tuiles autorise cela !

24

Remplir le Stream des tuiles

Vous pouvez aussi directement retourner un stream contenant le jpeg ou le png de vos tuiles, utile si vous avez vos tuiles dans une base de données.

procedure TForm.getTileStream(var TileStream: TMemoryStream;const x, y, z: integer);
begin
// here fill the stream with your tile

end;

procedure TForm.FormCreate(Sender: TObject);
begin

map.TileServerInfo.GetTileStream := getTileStream;
map.TileServerInfo.Name := 'MyStream';
map.TileServerInfo.TileFormat := stJpeg; // or stPng
// called last, if not the first display is not performed
map.TileServer := tsOwnerDraw;

end;

Vous pouvez aussi vous en servir pour utiliser un serveur de tuiles distant.

13
Aller à la page
Composant Delphi / Google Maps / OpenStreetMap / Leaflet  / Mappilary© 2016 ESCOT-SEP Christophe - Réalisé avec Help&Web - RSS - RSS - Google+