Openlayers Mouse Problem? oder besser OfflineVersion?

Hallo Ergänzung:

irgendwie kann man die Position von der Mouseposition mit dem Stylesheet beeinflussen. Hinweis in einem Beitrag weiter unten (!Important überschreibt übergeordnete Regeln) Vieln Dank für den Beitrag.

Ich kann jetzt meine Frage präzisieren, da noch mehrere Probleme auftauchen.

Frage: Wie kann man mit Firefox und Openlayers eine “pure” OFFLineVersion erstellen. Mit lokalen Karten mit XYZ Struktur und GPX Tracks-Anzeige. Mit der OnlineVersion ist das kein Problem. Wer hat sowas schon gemacht und weiß was man ändern muß?
Meine HTML ist weiter unten. Klar ist, dass man eine lokale Tilestruktur erstellen muß und die Javascriptdateien lokal halten muß. Aber das funzt nicht “vollständig”…

Wer hat Tipps?

Hallo

ich mache die ersten Versuche mit OpenLayers. Ich möchte die Mausposition und den PermaLink rechts unten in der Karte einfügen. Das funktioniert soweit ganz gut, wenn ich das API

direkt einbinde. Wenn ich aber das lokal einbinde wird das links oben angezeigt.

Ich habe natürlich die aktuelle Version lokal runtergeladen. Woran kann das liegen? Wie kann ich die Position festlegen? MfG Achim Ps: Wie binde ich den Hinweis auf OSM ein?

new OpenLayers.Control.Attribution() // openstreetmap in karte
gruss
walter

Hallo @Walter,

ich habe dies so definiert


map = new OpenLayers.Map (“map”, {
controls:[
new OpenLayers.Control.Navigation(),
new OpenLayers.Control.PanZoomBar(),
new OpenLayers.Control.MousePosition(),
new OpenLayers.Control.Permalink(),
new OpenLayers.Control.LayerSwitcher(),
new OpenLayers.Control.Attribution()],
maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
maxResolution: 156543.0399,
numZoomLevels: 21,
units: ‘m’,
projection: new OpenLayers.Projection(“EPSG:900913”),
displayProjection: new OpenLayers.Projection(“EPSG:4326”)
} );

aber da kommt kein Hinweis auf OSM…

MfG
Achim

Per CSS, die Attribute gibts hier aufgelistet, allerdings ohne Beschreibung: http://wiki.openstreetmap.org/wiki/DE:OpenLayers/CSS

Ich will z.B. gerne die Attribution unten rechts und die Mausposition mit schwarzem Text unten links (weiss aber nicht mehr, warum ich da überall “important” hinschreibe, war wohl wichtig):

<style>
.olControlAttribution {bottom: 2px!important; right:5px!important; }
div.olControlMousePosition {color:#000000;bottom: 2px!important; left:5px!important;}
</style>

Max

komisch, sollte gehen. ich schmeiße mal meinen server an und check das nochmal.

bei mir gehts.
hast du das drin?

hinter openlayers?

wenn du firefox verwendest, schau dir mal EXTRAS>FEHLERKONSOLE an

gruss
walter

                controls: [ // ACHTUNG: Reihenfolge ist wichtig !!!!
                    new OpenLayers.Control.Navigation(),
                    new OpenLayers.Control.PanZoomBar(),                       
                    new OpenLayers.Control.Permalink(),

// new OpenLayers.Control.Permalink(‘permalink’),
new OpenLayers.Control.LayerSwitcher({‘ascending’:true,
‘div’:OpenLayers.Util.getElement(‘panel’)}),
new OpenLayers.Control.ScaleLine(),
new OpenLayers.Control.MousePosition
({‘div’:OpenLayers.Util.getElement(‘lonlat’)}),
new OpenLayers.Control.OverviewMap(),
// new OpenLayers.Control.KeyboardDefaults()
new OpenLayers.Control.Attribution() // openstreetmap in karte
],

Wie bindest Du denn den Layer ein? “OpenLayers.Control.Attribution” gehört zur Karte. Der Text, der da drin steht, gehört zum Layer. Vielleicht hast Du zwar Attribution aber ohne Text…

Hallo

vielen Dank für die Tipps und Links. Ich habe jetzt ausgehend von einem Beispiel alle Elemente drin die ich haben will. Warum mein Ausgangsbeispiel nicht geht weiß ich (noch?) nicht.

Danke
Achim

was sagt firefox? andere browser haben sicher auch so ne debug-funktion. wenn der browser etwas nicht macht, sagt er dort normalerweise, wieso nicht.
es gibt noch nen ff-plugin firebug, der könnte weiter helfen.
aber bisher muß ich ja raten, da du dich hier ziemlich geschlossen hältst :frowning:

Hallo @Walter

ich halte mich nicht geschlossen…sondern das ist UNWISSEN von mir. Aber wie schon oben erwähnt habe ich ein Beispiel gefunden, welches geht.

Mein Ziel ist es lokal GPX Tracks anzuzeigen ohne INET Verbindung. Das oben beschriebene Problem bleibt aber

<<<<<<ALES so wie es sein soll

direkt einbinde. Wenn ich aber das lokal einbinde wird das links oben angezeigt, auch das + Symbol um die Layer zu selektieren.

<<<<<< Da werden die Koordinaten und das Plus (Layer) Symbol links oben angezeigt..... .... Die Fehlerkonsole zeigt keine Fehler. Firefox 3.6.3 Alles ist Lokal also kein Webserver. Ich rufe nur die HTML Datei auf. Tracks werden angezeigt. Eben nur das Mausproblem. Aber das ignoriere ich zunächst einmal.... Ich muß da zuerst mal die Grundlagen erarbeiten um gezielter zu fragen..... MfG Achim Das ist mein HTML: Simple OSM GPX Track <===== .......wenn nur lokal sind die Mauskoordinaten links oben...sonst rechts unten
<script src="http://www.openlayers.org/api/OpenLayers.js"></script>	
<script src="http://www.openstreetmap.org/openlayers/OpenStreetMap.js"></script> 

<script type="text/javascript">
	// Start position for the map (hardcoded here for simplicity,
	// but maybe you want to get this from the URL params)
    var lat=48.91;
    var lon=8.77;
    var zoom=12;

	var map; //complex object of type OpenLayers.Map

	function init() {
		map = new OpenLayers.Map ("map", {
			controls:[
				new OpenLayers.Control.Navigation(),
				new OpenLayers.Control.PanZoomBar(),
				new OpenLayers.Control.MousePosition(),
				new OpenLayers.Control.Permalink(),
				new OpenLayers.Control.LayerSwitcher(),
				new OpenLayers.Control.Attribution()],
			maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
			maxResolution: 156543.0399,
			numZoomLevels: 19,
			units: 'm',
			projection: new OpenLayers.Projection("EPSG:900913"),
			displayProjection: new OpenLayers.Projection("EPSG:4326")
		} );

		// Define the map layer
		// Here we use a predefined layer that will be kept up to date with URL changes
		layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik");
		map.addLayer(layerMapnik);
		layerTilesAtHome = new OpenLayers.Layer.OSM.Osmarender("Osmarender");
		map.addLayer(layerTilesAtHome);
		layerCycleMap = new OpenLayers.Layer.OSM.CycleMap("CycleMap");
		map.addLayer(layerCycleMap);
		layerMarkers = new OpenLayers.Layer.Markers("Markers");
		map.addLayer(layerMarkers);
		
		var newLayer = new OpenLayers.Layer.OSM("MOBAC (aKarten)", "MOBAC/HikeBike/osm/${z}/${x}/${y}.png", {numZoomLevels: 21});
  map.addLayer(newLayer);


		// Add the Layer with the GPX Track
		var lgpx = new OpenLayers.Layer.GML("HafnerHaslach", "./gpx/HafnerHaslach.gpx", {
			format: OpenLayers.Format.GPX,
			style: {strokeColor: "blue", strokeWidth: 5, strokeOpacity: 0.5},
			projection: new OpenLayers.Projection("EPSG:4326")
		});
		map.addLayer(lgpx);
		
			lgpx = new OpenLayers.Layer.GML("Wimsheim", "./gpx/Wimsheim.gpx", {
			format: OpenLayers.Format.GPX,
			style: {strokeColor: "red", strokeWidth: 5, strokeOpacity: 0.5},
			projection: new OpenLayers.Projection("EPSG:4326")
		});
		map.addLayer(lgpx);
			lgpx = new OpenLayers.Layer.GML("Gruenhuette.gpx", "./gpx/Gruenhuette.gpx", {
			format: OpenLayers.Format.GPX,
			style: {strokeColor: "green", strokeWidth: 5, strokeOpacity: 0.5},
			projection: new OpenLayers.Projection("EPSG:4326")
		});
		map.addLayer(lgpx);


		var lonLat = new OpenLayers.LonLat(lon, lat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
		map.setCenter(lonLat, zoom);

		var size = new OpenLayers.Size(21, 25);
		var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
		var icon = new OpenLayers.Icon('http://www.openstreetmap.org/openlayers/img/marker.png',size,offset);
		layerMarkers.addMarker(new OpenLayers.Marker(lonLat,icon));
	}
</script>

hi,
kein problem aber manchmal braucht man infos.
bin derzeit knapp mit zeit und kann deine anwort noch nicht “auseinanderrupfen” ;(

aber eins fehl mir:

lies mal ganz genau, was da steht: openSTREETMAP
wenn das nicht zusätzlich drin sein sollte, kann es nicht gehen.

gruss
walter

p.s. dafür, dass du dich nicht “auskennst” bist du aber ganz schön weit! prima.

Hallo

schau mal oben in meinem HTML File da steht doch


…habe ich da was übersehen, das müßte doch richtig sein? Achtung: Oben im HTML sind Scripte auskommentiert…

Irgendwie muß ich mich da durchtanken. Prinzipiell geht ja das was ich möchte.

…nur eben das Umstellen auf die LOKALE-Nutzung geht nicht. Ich war der Meinung, wenn man die JavaScripte runterläd ist das das Gleiche. Ich möchte halt eine Offline-Version…

p.s. dafür, dass du dich nicht “auskennst” bist du aber ganz schön weit! prima.

…entsprechende Beispiele aufgebohrt, also kein EIGENES Wissen!

MfG
Achim

tja , meinst etwa, ich hätt nen openlayers-kurs besucht ???

nee, bei dieser software muss man sich leider alles “zusammenkratzen”.
ist halt von typischen open-sw-entwickern geschrieben.

wozu doku? schau im source nach
wenn schon doku, dann bitte so, dass das so drinsteht, wie man es nur versteht wenn man das system von vorne bis hinten im schlaf kennt.
beispiele? aber sicher - doch nur solche, die von 2 jahren mal funktionierten.
u.s.w u.s.w

aber dennoch ist das teil gut - nur etwas schwer in griff zu bekommen. nur ich ha…e die api-“doku”.

jetzt im ernst: dass der script schon drin ist, hatte ich vorhin übersehen :frowning:

es gibt da irgendwo einen zusammenhang zwischen den scripten und dem web-server auf denen sie sich befinden. du hast die ja anscheinend erst remote und dann nochmal lokal eingebunden. er mag es nicht, wenn irgendwas nicht auf dem gleichen web-server liegt, von dem die verbindung zu openlayers aufgebaut wird. ebentuell liegt es daran? der fehlerlog im browser müsste dann was drin haben.

ansonsten muß ich für heute passen. muß mal eben ne neue db für germany aufsetzen, da mein hstore “geplatz” ist.

gruss
walter

Hallo

erster Beitrag ergänzt. Wer kann mir für eine reine OfflineVersion noch Tipps geben?

MfG
Achim

sorry, muss ich passen. dennoch viel erfolg.

nur so nebenbei: was willst du eigentlich erreichen? die ganzen java-script-sachen lokal halten oder browser komplett offline?
für zweiteres fehlt mir irgendwie das verständnis. notebook als navi ? oder als poi-info-system? irgend sowas ohne internetanbindung?
dann könnte ich mich nochmal “reindenken”
lg
walter

Hallo @Walter,

ganz einfach. Ich möchte meine unter anderem meine Wanderungen (GPX) Files grafisch auf einer Karte darstellen und überall da Anzeigen wo Firefox läuft. Das Ganze auf CD/DVD brennen in Verbindung mit Fotos. Ich plane meine Wanderrouten für den PDA/GPS auch Offline mit dem MOBAC und da wäre das halt ne schöne sinnvolle Ergänzung.
Um das anzuschauen möchte ich natürlich nicht immer Online sein bzw. habe da keine INET-Verbindung.

Klar kann man das auch mit einem Programm (zB. C#) machen, was ich auch schon rudimentär habe. Aber warum soll man das Rad neu erfinden, wo Firefox und Openlayers und Openstreetmap Standards (?) mit mächtiger Funktionalität sind…

In diesem Sinne
Achim

Hallo womisa,
Dann zeig ich dir mal meine offline-Version:

OSM Viewer
<link rel="stylesheet" href="style.css" type="text/css" >
<link rel="stylesheet" type="text/css" href="map.css">
<!-- bring in the OpenLayers javascript library
     (here we bring it from the remote site, but you could
     easily serve up this javascript yourself) -->
<script src="OpenLayers.js"></script>
<!-- bring in the OpenStreetMap OpenLayers layers.
     Using this hosted file will make sure we are kept up
     to date with any necessary changes -->
<script src="OpenStreetMapLokal.js"></script>
<script src="GPX.js"></script>

<script type="text/javascript">

// Start position for the map (hardcoded here for simplicity)
var lat=51.45;
var lon=7.0;
var zoom=12;

    var map; //complex object of type OpenLayers.Map

    //Initialise the 'map' object
    function init() {

        map = new OpenLayers.Map ("map", {
        controls:[ new OpenLayers.Control.Permalink(),
                   new OpenLayers.Control.Navigation(),
                   new OpenLayers.Control.PanZoomBar(),
                   new OpenLayers.Control.ScaleLine({geodesic: true}),
                   new OpenLayers.Control.MousePosition(),
                   new OpenLayers.Control.LayerSwitcher(),
                   new OpenLayers.Control.KeyboardDefaults()],
            maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
            maxResolution: 156543.0399,
            numZoomLevels: 19,
            units: 'm',
            projection: new OpenLayers.Projection("EPSG:900913"),
            displayProjection: new OpenLayers.Projection("EPSG:4326")
        } );

        layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik");
        map.addLayer(layerMapnik); 
        layerCycleMap = new OpenLayers.Layer.OSM.CycleMap("CycleMap");
        map.addLayer(layerCycleMap);
		var Top25Layer = new OpenLayers.Layer.OSM("Top25", "file:///D:/Tiles/Top25/${z}/${x}/${y}.png", {numZoomLevels: 17, alpha: true, isBaseLayer: true, visibility: false});
        map.addLayer(Top25Layer); 
		var OepnvLayer = new OpenLayers.Layer.OSM("Oepnv", "file:///D:/Tiles/Oepnv/${z}/${x}/${y}.png", {numZoomLevels: 16, alpha: true, isBaseLayer: true, visibility: false});
        map.addLayer(OepnvLayer); 
		
        // Transparente Layer
		
		
		var BahnLayer = new OpenLayers.Layer.OSM("Bahn", "file:///D:/Tiles/Bahn/${z}/${x}/${y}.png", {numZoomLevels: 17, alpha: true, isBaseLayer: false, visibility: false});
        map.addLayer(BahnLayer);
        var RadLayer = new OpenLayers.Layer.OSM("Rad", "file:///D:/Tiles/Rad/${z}/${x}/${y}.png", {numZoomLevels: 16, alpha: true, isBaseLayer: false, visibility: false});
        map.addLayer(RadLayer);			
        var WanderLayer = new OpenLayers.Layer.OSM("Wandern", "file:///D:/Tiles/lonvia/${z}/${x}/${y}.png", {numZoomLevels: 16, alpha: true, isBaseLayer: false, visibility: false});
        map.addLayer(WanderLayer);
        var StromLayer = new OpenLayers.Layer.OSM("Strom", "file:///D:/Tiles/Power/${z}/${x}/${y}.png", {numZoomLevels: 17, alpha: true, isBaseLayer: false, visibility: false});
        map.addLayer(StromLayer);

// Add the Layer with GPX Track choose the color of the Track (replace #00FF00 by the HTML code of the color you want)
var gpxlayer = new OpenLayers.Layer.GPX(“gpx”, “Track.gpx”, “#FFFF00”);
map.addLayer(gpxlayer);

            var switcherControl = new OpenLayers.Control.LayerSwitcher();
            map.addControl(switcherControl);
            switcherControl.maximizeControl();

		
		var lonLat = new OpenLayers.LonLat(lon, lat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
		map.setCenter (lonLat, zoom);

		var size = new OpenLayers.Size(21,25);
		var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);

	}
</script>

Damit alles schön aussieht, muss noch die entsprechende css-Datei im gleichen Verzeichnis stehen:

div.olMap {
z-index: 0;
padding: 0px!important;
margin: 0px!important;
cursor: default;
}

div.olMapViewport {
text-align: left;
}

div.olLayerDiv {
-moz-user-select: none;
}

.olLayerGoogleCopyright {
left: 2px;
bottom: 2px;
}
.olLayerGooglePoweredBy {
left: 2px;
bottom: 15px;
}
.olControlAttribution {
font-size: smaller;
right: 3px;
bottom: 4.5em;
position: absolute;
display: block;
}
.olControlScale {
right: 3px;
bottom: 3em;
display: block;
position: absolute;
font-size: smaller;
}
.olControlScaleLine {
display: block;
position: absolute;
left: 10px;
bottom: 15px;
font-size: xx-small;
}
.olControlScaleLineBottom {

display: none;
}

.olControlScaleLineTop {
border: solid 2px black;
border-top: none;
text-align: center;
}

.olControlPermalink {
right: 3px;
bottom: 1.5em;
display: block;
position: absolute;
font-size: smaller;
}

div.olControlMousePosition {
bottom: 0em;
right: 3px;
display: block;
position: absolute;
font-family: Arial;
font-size: smaller;
}

.olControlOverviewMapContainer {
position: absolute;
bottom: 0px;
right: 0px;
}

.olControlOverviewMapElement {
padding: 10px 18px 10px 10px;
background-color: #00008B;
-moz-border-radius: 1em 0 0 0;
}

.olControlOverviewMapMinimizeButton {
right: 0px;
bottom: 80px;
}

.olControlOverviewMapMaximizeButton {
right: 0px;
bottom: 80px;
}

.olControlOverviewMapExtentRectangle {
overflow: hidden;
background-image: url(“img/blank.gif”);
cursor: move;
border: 2px dotted red;
}
.olControlOverviewMapRectReplacement {
overflow: hidden;
cursor: move;
background-image: url(“img/overview_replacement.gif”);
background-repeat: no-repeat;
background-position: center;
}

.olLayerGeoRSSDescription {
float:left;
width:100%;
overflow:auto;
font-size:1.0em;
}
.olLayerGeoRSSClose {
float:right;
color:gray;
font-size:1.2em;
margin-right:6px;
font-family:sans-serif;
}
.olLayerGeoRSSTitle {
float:left;font-size:1.2em;
}

.olPopupContent {
padding:5px;
overflow: auto;
}
.olControlNavToolbar {
width:0px;
height:0px;
}
.olControlNavToolbar div {
display:block;
width: 28px;
height: 28px;
top: 300px;
left: 6px;
position: relative;
}

.olControlNavigationHistory {
background-image: url(“img/navigation_history.png”);
background-repeat: no-repeat;
width: 24px;
height: 24px;

}
.olControlNavigationHistoryPreviousItemActive {
background-position: 0px 0px;
}
.olControlNavigationHistoryPreviousItemInactive {
background-position: 0px -24px;
}
.olControlNavigationHistoryNextItemActive {
background-position: -24px 0px;
}
.olControlNavigationHistoryNextItemInactive {
background-position: -24px -24px;
}

.olControlNavToolbar .olControlNavigationItemActive {
background-image: url(“img/panning-hand-on.png”);
background-repeat: no-repeat;
}
.olControlNavToolbar .olControlNavigationItemInactive {
background-image: url(“img/panning-hand-off.png”);
background-repeat: no-repeat;
}
.olControlNavToolbar .olControlZoomBoxItemActive {
background-image: url(“img/drag-rectangle-on.png”);
background-color: orange;
background-repeat: no-repeat;
}
.olControlNavToolbar .olControlZoomBoxItemInactive {
background-image: url(“img/drag-rectangle-off.png”);
background-repeat: no-repeat;
}
.olControlEditingToolbar {
float:right;
right: 0px;
height: 30px;
width: 200px;
}
.olControlEditingToolbar div {
background-image: url(“img/editing_tool_bar.png”);
background-repeat: no-repeat;
float:right;
width: 24px;
height: 24px;
margin: 5px;
}
.olControlEditingToolbar .olControlNavigationItemActive {
background-position: -103px -23px;
}
.olControlEditingToolbar .olControlNavigationItemInactive {
background-position: -103px -0px;
}
.olControlEditingToolbar .olControlDrawFeaturePointItemActive {
background-position: -77px -23px;
}
.olControlEditingToolbar .olControlDrawFeaturePointItemInactive {
background-position: -77px -0px;
}
.olControlEditingToolbar .olControlDrawFeaturePathItemInactive {
background-position: -51px 0px;
}
.olControlEditingToolbar .olControlDrawFeaturePathItemActive {
background-position: -51px -23px;
}
.olControlEditingToolbar .olControlDrawFeaturePolygonItemInactive {
background-position: -26px 0px;
}
.olControlEditingToolbar .olControlDrawFeaturePolygonItemActive {
background-position: -26px -23px ;
}
div.olControlSaveFeaturesItemActive {
background-image: url(img/save_features_on.png);
background-repeat: no-repeat;
background-position: 0px 1px;
}
div.olControlSaveFeaturesItemInactive {
background-image: url(img/save_features_off.png);
background-repeat: no-repeat;
background-position: 0px 1px;
}

.olHandlerBoxZoomBox {
border: 2px solid red;
position: absolute;
background-color: white;
opacity: 0.50;
font-size: 1px;
filter: alpha(opacity=50);
}
.olHandlerBoxSelectFeature {
border: 2px solid blue;
position: absolute;
background-color: white;
opacity: 0.50;
font-size: 1px;
filter: alpha(opacity=50);
}

.olControlPanPanel {
top: 10px;
left: 5px;
}

.olControlPanPanel div {
background-image: url(img/pan-panel.png);
height: 18px;
width: 18px;
cursor: pointer;
position: absolute;
}

.olControlPanPanel .olControlPanNorthItemInactive {
top: 0px;
left: 9px;
background-position: 0px 0px;
}
.olControlPanPanel .olControlPanSouthItemInactive {
top: 36px;
left: 9px;
background-position: 18px 0px;
}
.olControlPanPanel .olControlPanWestItemInactive {
position: absolute;
top: 18px;
left: 0px;
background-position: 0px 18px;
}
.olControlPanPanel .olControlPanEastItemInactive {
top: 18px;
left: 18px;
background-position: 18px 18px;
}

.olControlZoomPanel {
top: 71px;
left: 14px;
}

.olControlZoomPanel div {
background-image: url(img/zoom-panel.png);
position: absolute;
height: 18px;
width: 18px;
cursor: pointer;
}

.olControlZoomPanel .olControlZoomInItemInactive {
top: 0px;
left: 0px;
background-position: 0px 0px;
}

.olControlZoomPanel .olControlZoomToMaxExtentItemInactive {
top: 18px;
left: 0px;
background-position: 0px -18px;
}

.olControlZoomPanel .olControlZoomOutItemInactive {
top: 36px;
left: 0px;
background-position: 0px 18px;
}

.olPopupCloseBox {
background: url(“img/close.gif”) no-repeat;
cursor: pointer;
}

.olFramedCloudPopupContent {
padding: 5px;
overflow: auto;
}

.olControlNoSelect {
-moz-user-select: none;
}

.olImageLoadError {
background-color: pink;
opacity: 0.5;
filter: alpha(opacity=50); /* IE */
}

/**

  • Cursor styles
    */

.olCursorWait {
cursor: wait;
}
.olDragDown {
cursor: move;
}
.olDrawBox {
cursor: crosshair;
}
.olControlDragFeatureOver {
cursor: move;
}
.olControlDragFeatureActive.olControlDragFeatureOver.olDragDown {
cursor: -moz-grabbing;
}

/**

  • Layer switcher
    */
    .olControlLayerSwitcher {
    position: absolute;
    top: 25px;
    right: 0px;
    width: 20em;
    font-family: sans-serif;
    font-weight: bold;
    margin-top: 3px;
    margin-left: 3px;
    margin-bottom: 3px;
    font-size: smaller;
    color: white;
    background-color: transparent;
    }

.olControlLayerSwitcher .layersDiv {
padding-top: 5px;
padding-left: 10px;
padding-bottom: 5px;
padding-right: 75px;
background-color: darkblue;
width: 100%;
height: 100%;
}

.olControlLayerSwitcher .layersDiv .baseLbl,
.olControlLayerSwitcher .layersDiv .dataLbl {
margin-top: 3px;
margin-left: 3px;
margin-bottom: 3px;
}

.olControlLayerSwitcher .layersDiv .baseLayersDiv,
.olControlLayerSwitcher .layersDiv .dataLayersDiv {
padding-left: 10px;
}

.olControlLayerSwitcher .maximizeDiv,
.olControlLayerSwitcher .minimizeDiv {
top: 5px;
right: 0px;
}

In der OpenstreetmapLokal.js habe ich die Pfade vom Tileserver auf mein Verzeichnis umgebogen:

/**

  • Namespace: Util.OSM
    */
    OpenLayers.Util.OSM = {};

/**

/**

  • Property: originalOnImageLoadError
  • {Function} Original onImageLoadError function.
    */
    OpenLayers.Util.OSM.originalOnImageLoadError = OpenLayers.Util.onImageLoadError;

/**

  • Function: onImageLoadError
    */
    OpenLayers.Util.onImageLoadError = function() {
    if (this.src.match(/^http://[abc].[a-z]+.openstreetmap.org//)) {
    this.src = OpenLayers.Util.OSM.MISSING_TILE_URL;
    } else if (this.src.match(/^http://[def].tah.openstreetmap.org//)) {
    // do nothing - this layer is transparent
    } else {
    OpenLayers.Util.OSM.originalOnImageLoadError;
    }
    };

/**

  • Class: OpenLayers.Layer.OSM.Mapnik

  • Inherits from:

    • <OpenLayers.Layer.OSM>
      /
      OpenLayers.Layer.OSM.Mapnik = OpenLayers.Class(OpenLayers.Layer.OSM, {
      /
      *
    • Constructor: OpenLayers.Layer.OSM.Mapnik
    • Parameters:
    • name - {String}
    • options - {Object} Hashtable of extra options to tag onto the layer
      */
      initialize: function(name, options) {
      var url = [
      “file:///D:/Tiles/Mapnik/${z}/${x}/${y}.png”
      ];
      options = OpenLayers.Util.extend({ numZoomLevels: 19 }, options);
      var newArguments = [name, url, options];
      OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
      },

    CLASS_NAME: “OpenLayers.Layer.OSM.Mapnik”
    });

/**

  • Class: OpenLayers.Layer.OSM.CycleMap

  • Inherits from:

    • <OpenLayers.Layer.OSM>
      /
      OpenLayers.Layer.OSM.CycleMap = OpenLayers.Class(OpenLayers.Layer.OSM, {
      /
      *
    • Constructor: OpenLayers.Layer.OSM.CycleMap
    • Parameters:
    • name - {String}
    • options - {Object} Hashtable of extra options to tag onto the layer
      */
      initialize: function(name, options) {
      var url = [
      “file:///D:/Tiles/CycleMap/${z}/${x}/${y}.png”
      ];
      options = OpenLayers.Util.extend({ numZoomLevels: 19 }, options);
      var newArguments = [name, url, options];
      OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
      },

    CLASS_NAME: “OpenLayers.Layer.OSM.CycleMap”
    });

/**

  • Class: OpenLayers.Layer.OSM.Radwanderkarte

  • Inherits from:

    • <OpenLayers.Layer.OSM>
      /
      OpenLayers.Layer.OSM.Radwanderkarte = OpenLayers.Class(OpenLayers.Layer.OSM, {
      /
      *
    • Constructor: OpenLayers.Layer.OSM.Radwanderkarte
    • Parameters:
    • name - {String}
    • options - {Object} Hashtable of extra options to tag onto the layer
      */
      initialize: function(name, options) {
      var url = [
      “file:///D:/Tiles/Radwanderkarte/${z}/${x}/${y}.png”
      ];
      options = OpenLayers.Util.extend({ numZoomLevels: 16 }, options);
      var newArguments = [name, url, options];
      OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
      },

    CLASS_NAME: “OpenLayers.Layer.OSM.Radwanderkarte”
    });

/**

  • Class: OpenLayers.Layer.OSM.Power

  • Inherits from:

    • <OpenLayers.Layer.OSM>
      /
      OpenLayers.Layer.OSM.Power = OpenLayers.Class(OpenLayers.Layer.OSM, {
      /
      *
    • Constructor: OpenLayers.Layer.OSM.Power
    • Parameters:
    • name - {String}
    • options - {Object} Hashtable of extra options to tag onto the layer
      */
      initialize: function(name, options) {
      var url = [
      “file:///D:/Tiles/Power/${z}/${x}/${y}.png”
      ];
      options = OpenLayers.Util.extend({ numZoomLevels: 16 }, options);
      var newArguments = [name, url, options];
      OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
      },

    CLASS_NAME: “OpenLayers.Layer.OSM.Power”
    });

Gruß,
ajoessen

Hallo ajoessen,

vielen Dank für die Antwort und die Info. Da sind aber für mich noch viele Geheimnisse versteckt. So zum Beispiel

was ist da drin geändert? ==> ok, wer lesen kann ist im Vorteil…steht oben…
Ansonsten ist das mal “harter” Tobak für mich. Kann man eventuell eine Zip von dir haben wo was funktionierendes drin ist. Oder wo bekommt man die “nicht” Standard Scipte her. Warum wird das GPX.js Script gesondert benötigt, ist das nicht in der anderen Sciptdatei mit drin?

Fragen über Fragen.
Irgendwie müssen doch da auch noch die (Bedien)-Images lokal abgelegt werden, oder? ==> ok, erledigt…man sollte erst denken, dann schreiben…

Nochmals Danke für die Info
Achim

Ps.: Gibt es da keine Restriktionen wenn man absolut auf files zugreifen will? Muß man da was freischalten?

Fehler: uncaught exception: [Exception… “Access to restricted URI denied” code: “1012” nsresult: “0x805303f4 (NS_ERROR_DOM_BAD_URI)” location: “file:///D:/www/_GPS/OpenLayer/OpenLayers.js Line: 1188”]

jo, das macht sinn. aber manchmal frag ich lieber nach, was dass soll.

die antwort von ajoessen werden wir wohl beide “ausschlachten”. ich glaube, dass dir damit geholfen ist.
gruss
walter

Hallo

das von ajoessen ist glaube ich genau das was ich möchte. Ich habe das auch mal versucht zum laufen zu bringen, habe aber mit der Angabe auf meine lokalen Tiles Problem mit dem Zugriff(restriction). Diese für mich ungelösten Probleme hatte schon in einem anderen Zusammenhang.

Ich habe Firefox 3.6.3 und Windows XP.

Wie kann da sowas wie …“file:///D:/Tiles/HikeBike/${z}/${x}/${y}.png” einbinden ohne dass sowas

Fehler: uncaught exception: [Exception… “Access to restricted URI denied” code: “1012” nsresult: “0x805303f4 (NS_ERROR_DOM_BAD_URI)” location: “file:///D:/www/_GPS/OpenLayer/OpenLayers.js Line: 1188”]

kommt?

MfG
Achim

Ps.: Ich kann das nur relativ zur Start.html eintragen…Damit gehts…


var newLayer = new OpenLayers.Layer.OSM(“MOBAC (aKarten)”, “./HikeBike/osm/${z}/${x}/${y}.png”, {numZoomLevels: 21});
map.addLayer(newLayer);

Das löst aber zumindest mal mein Eingangsproblem. Den Rest…Schaun mer mal…

Ich hab hier den gleichen Firefox unter XP Prof.

Muss also irgendwie mit den userrechten zusammenhängen. Probier doch mal K-Meleon oder opera.

Gruß,
ajoessen