You are not logged in.

Announcement

*** NOTICE: forum.openstreetmap.org is being retired. Please request a category for your community in the new ones as soon as possible using this process, which will allow you to propose your community moderators.
Please create new topics on the new site at community.openstreetmap.org. We expect the migration of data will take a few weeks, you can follow its progress here.***

#1 2013-06-01 10:57:58

noob002
Member
Registered: 2013-06-01
Posts: 15

kachel Dateiname

Hallo Forum,

Leider habe ich nichts im Netz gefunden.
Ich will, dass beim cklick auf eine Kachel die Dateiname der Kachel angezeigt wird. (Alert)

Für jeden Hinweis bedanke ich mich im voraus

Offline

#2 2013-06-01 11:37:50

reneman
Member
From: Mainz
Registered: 2012-10-13
Posts: 1,106
Website

Re: kachel Dateiname

<script language="javascript">

document.onclick = function(objEvt){
  var objEvt = (window.event)? window.event: objEvt;
  var objSrc = (objEvt.target)? objEvt.target : objEvt.srcElement;
  alert(objSrc.src);
}

</script>

Edit:
1. Willkommen im Forum.
2. JS Ergebnis ist zu 90% von Google [1]

Last edited by reneman (2013-06-01 11:41:17)


» Check the Monuments! «
Viele der als historic=monument erfassten Objekte sind in Wirklichkeit kein Monument. Sie wurden mangels passender Tags oder aus Unkenntnis als Monument erfaßt. Diese Karte CheckTheMonuments will bei der Korrektur unterstützen.

Offline

#3 2013-06-01 11:41:06

moenk
Member
From: N52.466 E13.335
Registered: 2012-04-02
Posts: 493
Website

Re: kachel Dateiname

Moin,

das kann man mit OL machen:
http://openlayers.org/dev/examples/click.html

Musst nur die Formel ändern:
http://wiki.openstreetmap.org/wiki/Slip … le_numbers

LG,

-moenk

Offline

#4 2013-06-01 12:08:41

maxbe
Member
Registered: 2010-01-19
Posts: 3,255
Website

Re: kachel Dateiname

Falls dich mehr die Berechnung der Kachelnummer aus der Koordinate interessiert als das Popup, hätte ich da was in der Wühlkiste: http://geo.dianacht.de/tests/kachelnummer.html

Offline

#5 2013-06-01 17:29:36

noob002
Member
Registered: 2013-06-01
Posts: 15

Re: kachel Dateiname

maxbe genau das habe ich gesucht! Mal ein riesen Lob an dich!

Offline

#6 2013-06-01 17:45:48

wambacher
Member
From: Schlangenbad/Wambach, Germany
Registered: 2009-12-16
Posts: 16,769
Website

Re: kachel Dateiname

noob002 wrote:

maxbe genau das habe ich gesucht! Mal ein riesen Lob an dich!

und nu? was hast du eigentlich vor?

wget * aus einem bestimmten Bereich?

Gruss
walter

Offline

#7 2013-06-01 18:12:14

noob002
Member
Registered: 2013-06-01
Posts: 15

Re: kachel Dateiname

genau das!
nur, dass es nicht abgeschrieben wird, sondern auch was für die Zukunft gelernt wird. Könntest du bitte kurz erklären wie auf die Kachelname zugegriffen wird?

Offline

#8 2013-06-01 18:48:32

rayquaza
Member
From: DE-BW
Registered: 2012-11-18
Posts: 2,007

Re: kachel Dateiname

Das Erstellen der Kacheln erfordert relativ viel Rechenleistung, weshalb die meisten Kacheln nur erstellt werden, wenn sie angefragt werden. Wenn nun jemand alle Kacheln eines Gebietes herunterlädt – wo fast immer welche dabei wären, die normalerweise nie jemand ansehen würde – werden also unnötigerweise Kacheln erzeugt, wodurch der Server sehr langsam bis (für alle!) unbenutzbar wird. Aus diesem Grund gibt es die Tile Usage Policy, die ein automatisches Herunterladen der Kacheln untersagt.

Du kannst alternativ die Rohdaten herunterladen und die Kacheln selbst erstellen, wobei du das Aussehen dieser auch nach deinen Wünschen anpassen kannst. Hierzu gibt es viele Möglichkeiten. Wenn du genauer beschreibst, was du erreichen möchtest helfen wir dir dabei gerne weiter.

Offline

#9 2013-06-01 19:04:54

noob002
Member
Registered: 2013-06-01
Posts: 15

Re: kachel Dateiname

Die Kacheln werden auf meinem Rechner Local erzeugt.

Im Prinzip will ich Openlayers etwas missbrauchen big_smile

Also erreicht soll folgendes:

Will Kacheln-Namen als Koordinaten nutzen nur XY Achsen. Keine GeoKarte nur als interaktiver Fotoalbum.

Soll positionieren können aber nicht anhand Koords sondern Kachelnnamen also XY

Offline

#10 2013-06-01 19:27:22

EvanE
Member
Registered: 2009-11-30
Posts: 5,716

Re: kachel Dateiname

noob002 wrote:

Die Kacheln werden auf meinem Rechner Local erzeugt.
Im Prinzip will ich Openlayers etwas missbrauchen big_smile

Also erreicht soll folgendes:
Will Kacheln-Namen als Koordinaten nutzen nur XY Achsen. Keine GeoKarte nur als interaktiver Fotoalbum.
Soll positionieren können aber nicht anhand Koords sondern Kachelnnamen also XY

Was die Kacheln betrifft brauchst du 3 Werte:
  -  Zoomstufe
  -  Horizontal (West-Ost)
  -  Vertikal    (Nord-Süd)

Ohne Zoomstufe ist unklar welche Kacheln gemeint sind.
Nur in dem Fall, dass du immer eine definierte Zoomstufe verwendest, kannst du die fest ins Programm reinschreiben. Die Ordnerstruktur ist entsprechend ausgelegt: <Zoomstufe>/<X-Wert>/<Y-Wert>. Dabei entsprechen die Zoomstufe und der X-Wert Ordnernamen, der Y-Wert ist dann der Dateiname.

PS: Herzlich willkommen im Forum

Edbert (EvanE)

Offline

#11 2013-06-01 19:34:26

wambacher
Member
From: Schlangenbad/Wambach, Germany
Registered: 2009-12-16
Posts: 16,769
Website

Re: kachel Dateiname

noob002 wrote:

Die Kacheln werden auf meinem Rechner Local erzeugt.

Nun denn, man wird doch mal fragen dürfen wink

Hatten auch schon Anwender, die sich mal ganz flott einen Tile-Loader schreiben und damit ein ganzes Bundesland auf Zoomlevel 18 runterladen wollten. Oder auch eine App, die gleiches den Anwendern "verkauft" hatte. (Mobile Creator?)

Weiterhin viel Spass und Erfolg bei deinem Projekt

Walter

Offline

#12 2013-06-01 20:32:15

noob002
Member
Registered: 2013-06-01
Posts: 15

Re: kachel Dateiname

ne wie loader oder auch Tile-Server genannt funktoniert ist mit klar.
die Anwendung ist DB gestützt, hat aber nichts mit GeoDaten oder GeoKarten zu tun.

Die Kacheln haben festen ZoomWert, in meinem Fall 12. Da ich ca. 2000x2000 Kacheln benötige
Für jedes Kachel wird ein festes Bild vergeben, (Kachelgrösse 128x128px)

Wie kann ich z.B. direkt auf Kachel mit Positin x156 / y200 zentrieren?

Offline

#13 2013-06-01 20:55:12

maxbe
Member
Registered: 2010-01-19
Posts: 3,255
Website

Re: kachel Dateiname

noob002 wrote:

Könntest du bitte kurz erklären wie auf die Kachelname zugegriffen wird?

Ich probiers mal...

Das wichtige steht im oben schon von Moenk verlinkten Wiki-Beitrag. Nur kannst Du die ganze Mathe überspringen, wenn Du Dir das von Openlayers abnehmen lässt. Der ganze code für die Nummernausgabe sieht so aus:

var mlonlat=new OpenLayers.LonLat(lon,lat).transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913"));
var mx=mlonlat.lon;
var my=mlonlat.lat;
var z=map.getZoom();
var kx=Math.floor((20037508.34+mx)/(20037508.34*2)*Math.pow(2,z));
var ky=Math.floor((20037508.34-my)/(20037508.34*2)*Math.pow(2,z));
var text="Kachel:/"+z+"/"+kx+"/"+ky+".png";

OSM hat seine Kachelnummerierung von Google abgeschaut, weil Google setzt Standards. Andere Tile-Server haben ein anderes Numerierungsschema und wie die Daten auf den Festplatten der Server liegen ist wieder eine ganz andere Geschichte.

Google bildet die Erdkugel so ab, dass sie zu einem Quadrat wird. Das erreicht man durch Mercatorprojektion ("EPSG:900913" oder "EPSG:3857") und Abschneiden an den Polen, bis ein Quadrat rauskommt. Die Koordinaten in diesem System laufen von -20037508,... bis +20037508,... an der x-Achse in Ostrichtung und ebenso an der y-Achse in Nordrichtung (die roten Zahlen im Bild unten). Jede dieser Kacheln ist 256x256 Pixel gross, was einfach Festlegung ohne tiefere technische Bedeutung ist.

Die Umrechnung von Längengrad/Breitengrad in "Mercatorkoordinaten" erledigt OpenLayers mit

var mlonlat=new OpenLayers.LonLat(lon,lat).transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913"));
var mx=mlonlat.lon;
var my=mlonlat.lat;

Man hat dann in mx und my diese "Mercatorkoordinaten" und hat sich die Sinüsse und Cosinüsse aus dem Artikel erspart.

Der Tileserver zerlegt die Welt in 1x1 Kachel  für Zoomlevel 0, 2x2 Kacheln im Zoom 1, 4x4 Kacheln im Zoom 2 ....  1024x2024 im Zoom 10... also in (2^Zoomlevel)x(2^Zoomlevel) Kacheln oder in Javascript "Math.pow(2,zoomlevel)"
Maxbe_kachelnummern.png

Die Umrechnung der Koordinaten in Kacheln geht mit

var kx=Math.floor((20037508.34+mx)/(20037508.34*2)*Math.pow(2,z));

für die X-Achse. "(20037508.34+mx)/(20037508.34*2)" liefert ein Ergebnis zurück, das zwischen 0 am linken Rand der Karte und 1 am rechten Rand der Karte liegt. Das ganze wird mit der maximalen Anzahl der Kacheln multipliziert "*Math.pow(2,z)" und abgerundet "Math.floor(...)", weil die Kachelnummern am linken Rand mit 0 starten.

Analog geht es mit der y-Koordinate. Nur dass dort "20037508.34-my" steht, weil Google sich dazu entschlossen hat, die Kacheln von oben nach unten zu zählen, also entgegen der Richtung der Y-Achse.

Der Pfad zur Kachel wird dann einfach mit Zoom/X-Nummer/y-Nummer.png gebildet.

Grüße, Max

Offline

#14 2013-06-01 21:19:17

maxbe
Member
Registered: 2010-01-19
Posts: 3,255
Website

Re: kachel Dateiname

noob002 wrote:

ne wie loader oder auch Tile-Server genannt funktoniert ist mit klar.
die Anwendung ist DB gestützt, hat aber nichts mit GeoDaten oder GeoKarten zu tun.

Also auch nichts mit OpenStreetMap im weitesten Sinne?

Die Kacheln haben festen ZoomWert, in meinem Fall 12. Da ich ca. 2000x2000 Kacheln benötige
Für jedes Kachel wird ein festes Bild vergeben, (Kachelgrösse 128x128px)

Wie kann ich z.B. direkt auf Kachel mit Positin x156 / y200 zentrieren?

In deinem Koordinatensystem springst du auf die Position x=linkerrrand+(156/(2^12))*(Ausdehnung-in-x-Richtung) und y=obererrand+(200/(2^12))*(Ausdehnung-in-y-Richtung). Vielleicht noch eine halbe Kachelgröße dazu, damit du in der Mitte landest....

Offline

#15 2013-06-05 13:32:21

noob002
Member
Registered: 2013-06-01
Posts: 15

Re: kachel Dateiname

maxbe vielen Dank!

Nein. es hat nichts mit OpenStreetMap oder GEO Daten zu tun. nicht mal annähernd.

Dank dir habe ich mehr oder weniger verstanden wie OpenLayers funzt.

mein Prob habe ich so gelöst, ob es klug ist k.A.:
habe mir new OpenLayers.Bounds(  0.0, -2500.0, 2500.0, 0.0 ) angelegt.
als maxResolution: 1 wert angegeben.
Zoom angegeben

und schon funzt wie bestellt.

das Problem ist nur mit dem Mausrad. Wie kann ich Zoom Funktion abstellen?

Offline

#16 2013-06-05 13:37:43

Joachim Moskalewski
Member
From: Sindelfingen
Registered: 2012-11-23
Posts: 346
Website

Re: kachel Dateiname

noob002 wrote:

Wie kann ich Zoom Funktion abstellen?

In dem Du

OpenLayers.Control.PanZoomBar()

nicht einbindest. Ist dieses Element nicht vorhanden, zeigt auch das Mausrad keine Wirkung mehr.

Offline

#17 2013-06-05 20:01:07

noob002
Member
Registered: 2013-06-01
Posts: 15

Re: kachel Dateiname

habe ich auch nicht eingebunden, dennoch ist Mausrad aktiv.

Offline

#18 2013-06-06 19:13:03

maxbe
Member
Registered: 2010-01-19
Posts: 3,255
Website

Re: kachel Dateiname

noob002 wrote:

habe ich auch nicht eingebunden, dennoch ist Mausrad aktiv.

Du hast Dich vermutlich gar nicht um controls gekümmert und hast die default-controls. Binde doch mal die Karte ganz ohne controls ein

map=new OpenLayers.Map('...',{ ..., ..., ..., controls: []})

und nimm die dazu, die Dir gefallen:

map.addControl(new OpenLayers.Control.MousePosition());
 map.addControl(new OpenLayers.Control.Navigation());

Was es alles gibt, steht in der Gebrauchsanweisung von Openlayers, wenn man das fettgedruckte "Control" links aufklappt. Bei einigen, z.B. OpenLayers.Control.Navigation() gibts auch noch Optionen, z.B. "zoomWheelEnabled". Damit würde ich anfangen.

Grüße, Max

Offline

Board footer

Powered by FluxBB