TECMap permet d'enregistrer et de recharger la totalité de ses données dans un simple fichier texte, cela comprend non seulement les paramètrages du composant et des vues mais aussi les données cartographiques des overlays
Vous pouvez aussi importer/exporter vos données aux formats GPX, WKT, KML et GeoJSON mais dans ces formats seules les données géographiques sont exploitées.
Sauvegarde/Restauration
function SaveToFile(const filename:string):boolean;Enregistre la carte dans un fichier texte.
Utilisez les extensions .gpx , .wkt, .kml et .json pour spécifier un format, autrement c'est le format interne d'ECMap qui sera employé
function LoadFromFile(const filename:string):boolean;Charge la carte avec un fichier texte
Utilisez les extensions .gpx , .kml, .wkt, .geojson et .json pour spécifier un format, autrement c'est le format interne d'ECMap qui sera employé
LoadFromFile peut télécharger les fichiers sur internet
1property toGPX : string;
Propriété en lecture/écriture qui donne accès aux données de la carte dans le format GPX.
property toTxt : string;Propriété en lecture/écriture qui donne accès aux données de la carte dans un format texte.
Cette propriété est utilisée par SaveToFile, LoadFromFile.
property toWKT : string;Propriété en lecture/écriture qui donne accès aux données de la carte dans le format WKT.
property ToKml : string;Propriété en lecture / écriture qui retourne les overlays (tous sauf les Labels) au format Kml
Cette propriété est utilisée par SaveToKmlFileEarthView permet l'import/export KML dans un format plus complet
property ToGeoJSON : string;Propriété en lecture / écriture qui retourne/importe les overlays (juste les markers, les polylines, les polygones, les cercles et les rectangles) au format GeoJSON
L'affection d'une valeur à toTxt, ToWKT , ToKml, ToGpx, ToGeoJSON ou le chargement d'un fichier par LoadFromFile provoque les évènements OnBeforeChangeToTxt et OnAfterChangeToTxt, le premier à lieu juste avant le changement de valeur et le second juste après.
OnLoadOverlay est aussi déclenché après l'ajout de chaque overlay (marker, polyline, polygone...) cela peut vous permettre d'ajuster les propriétés pendant le chargement des données.
Vous pouvez stopper le chargement en basculant StopLoadOverlay à true
//
procedure TFormDemoECMap.mapLoadOverlay(sender: TObject; const Index: Integer; const OverlayType: TOverlayType);
begin
case OverlayType of
ovMarker : begin
// override data marker
map.markers[index].name := 'your data';
end;
ovLine : begin
// override data Polyline
map.Polylines[index].Color := clBlue;
map.Polylines[index].Update;
end;
...
end;
// stop if too many markers
map.StopLoadOverlay := map.Markers.Count>3000;
end;
Paramètrage import/export
Lorsque vous importez/exportez au format texte, par défaut l'ensemble des données le sont, que cela soit les paramètres de la carte (type d'api, position etc) ou les overlays (markers, circles, routes etc).
De même que lors d'une importation les anciens overlays sont remplacés par les nouveaux.
La propriété ToTxtType vous offre un certain contrôle.
// Delphi
map component ECMap
//
procedure
TFormDemoECMap.mapLoadOverlay(sender: TObject;
const Index: Integer; const OverlayType: TOverlayType);
begin
case OverlayType
of
ovMarker : begin
// override data
marker
map.markers[index].name :=
'your data';
end;
ovLine : begin
// override data
Polyline
map.Polylines[index].Color
:= clBlue;
map.Polylines[index].Update;
end;
...
end;
// stop if too many
markers
map.StopLoadOverlay := map.Markers.Count>3000;
end;
format texte
chaque partie est découpée en section, les données sont nommées et n'ont pas besoin d'être dans un ordre particulier.
Pour les overlays chaque ligne correspond aux données d'un élément (un marker, un cercle etc)
Exemple de carte
// Delphi
map component ECMap
//
procedure
TFormDemoECMap.mapLoadOverlay(sender: TObject;
const Index: Integer; const OverlayType: TOverlayType);
begin
case OverlayType
of
ovMarker : begin
// override data
marker
map.markers[index].name :=
'your data';
end;
ovLine : begin
// override data
Polyline
map.Polylines[index].Color
:= clBlue;
map.Polylines[index].Update;
end;
...
end;
// stop if too many
markers
map.StopLoadOverlay := map.Markers.Count>3000;
end;
Import/Export des overlays
Les overlays disposent eux aussi de propriété toTxt permettant l'importation et l'exportation, que cela soit au niveau de leur liste (Markers, Routes etc) que de l'élément lui même.
Au niveau des listes l'importation est obligatoirement un ajout, il n'est pas tenu compte de la propriété toTxtType qui n'est prise en charge qu'au niveau global.
// Delphi
map component ECMap
//
procedure
TFormDemoECMap.mapLoadOverlay(sender: TObject;
const Index: Integer; const OverlayType: TOverlayType);
begin
case OverlayType
of
ovMarker : begin
// override data
marker
map.markers[index].name :=
'your data';
end;
ovLine : begin
// override data
Polyline
map.Polylines[index].Color
:= clBlue;
map.Polylines[index].Update;
end;
...
end;
// stop if too many
markers
map.StopLoadOverlay := map.Markers.Count>3000;
end;
Lorsque vous utilisez toTxt au niveau des overlays vous ne devez pas indiquer la section, toutes les propriétés ne sont pas nécessaire, les absentes auront des valeurs par défaut.
1