Hallo Thom,
noch ein Nachtrag zu Openlayers...
Meine OpenLayers-Apps sind für Offline- und Online-Betrieb ausgelegt.
Ich lade die OL-Bibliothek nicht aus dem Internet sondern direkt lokal vom Rechner.
Code:
<script type="text/javascript" src="http://
localhost:28991/OpenLayers/OpenLayers.js"></script>
<script type="text/javascript" src="http://
localhost:28991/OpenStreetMap/OpenStreetMap.js"></script>
Ein in die App integrierter HTTP-Server (den ich u.a. auch für REST-Kommunikation brauche) hostet den JS-Stuff der App.
Nach dem Start der App suche ich Offline-Karten (Verzeichnisse mit Endung OLM = OpenLayersMaps, in welchen sich mit Mapnik gerenderte OSM-Tiles der jeweiligen Zoomlevel befinden) und baue diese in den JS-Stuff ein
Delphi-Quellcode:
if FOfflineMapList.Count<>0
then
begin
i:= IndexOfString(JavascriptMemo.Lines,'
//Offline-Maps (Don''
t change this line !)');
if i<>-1
then
for w := 0
to FOfflineMapList.Count-1
do
begin
JavascriptMemo.Lines.Insert(i+1,'
var OfflineMap'+IntToStr(w)+'
= new OpenLayers.Layer.OSM("'+NameWithoutExt(FOfflineMapList[w])+'
", "http://localhost:28991/'+FOfflineMapList[w]+'
/${z}/${x}/${y}.png", {numZoomLevels: 19});');
JavascriptMemo.Lines.Insert(i+2,'
map.addLayer(OfflineMap'+IntToStr(w)+'
);');
end;
end;
Für den Anwender bedeutet dies :
- Hat er eine Internetverbindung und keine Offline-Maps, dann kann er nur die Online-Maps auswählen
- Hat er eine Internetverbindung und Offline-Maps, dann kann er in der Reihenfolge Offline-Maps und dann Online-Maps auswählen
Das bedeutet, dass selbst bei einer Internetverbindung zunächst die Offline-Karten genutzt werden und nicht erst über eine eventuell dünne
GPRS-Verbindung fette Google-Sat-Karten aufgebaut werden müssen.
- Hat er keine Internetverbindung aber Offline-Maps, dann kann er nur die Offline-Maps auswählen
Warum schreibe ich das ?
Könntest du mal in deine Überlegungen die Integration eines reinen Offline-Betriebs mit einbeziehen ?