max/min lat/lon von JMapViewer abfragen

Hallo,

ich will mein Javawissen mal wieder auffrischen und was liegt da näher als ein kleines Tool für OSM zu programmieren ? :wink:
Ein kleines Problem hätte ich da noch:

Ich würde gerne die aktuellen max-/min- lat/lon Werte des aktuellen Bildausschnittes auslesen. Entweder bin ich total blind und sehe die “getmaxlat()” etc. Funktionen nicht oder muss ich mir das selber zusammenrechnen?

Ich würde mich sehr über Hilfe / Tipps freuen!

P.S.: Evtl. veröffentliche ich das Progrämmchen bei erfolgreicher Fertigstellung auch :wink: Aber nur wenn ich es für wirklich erwähnenswert halte :wink:

-snip-

Ich suche jetzt seit Wochen nach einer Lösung für ein Problem, was dem hier recht nahe kommt.

Ich habe ein paar Stunden mit Openlayers rumgefrickelt und mir auch diverse Dokus (bspw. bei Netzwolf) angetan, es ist aber nirgends genau das dabei, was ich gern hätte:

vorab: ich hab nahezu Null Plan von JS.

Ich suche eine Möglichkeit $lat $lon und $zoom (aus der Karte) abzugreifen um die bei verschiedenen Links weiterzuverwenden. Ich erklär das mal an der Funktion des Permalinks:
Ich möchte kein JS-Schnipsel, der mir den kompletten Permalink neumalt, sondern die Möglichkeit, den in HTML semidirekt abzubilden, also in etwa:

<a href="http://www.openstreetmap.org/#map=<script echo $zoom></script>/<script echo $lat></script>/<script echo $lon></script>&layers=N">Permalink</a>

Hintergrund der Sache ist, dass ich etwas ähnliches bauen will wie http://osmtools.de/osmlinks/ nur eben mit (teils) anderen Links, und ich nicht bei der generierung/aufdröselung der Links in JS klarkomme.

Kann mir da mal jemand unter die Arme greifen?

Anmerkung: da Java etwas anderes als JavaScript ist, adressiert deine Frage in diesem Faden erst mal die “falschen” Leute.

Hier mal ein Lösungsansatz (nicht vollständig getestet):

1. Permalink Objekt erzeugen

a) wenn eh schon in Karte vorhanden, noch Variable zuweisen:


var permalink = new OpenLayers.Control.Permalink()
map.addControl(permalink);

b) sonst separat neu erzeugen, ohne dass er in der Karte auftaucht:


var permalink = new OpenLayers.Control.Permalink({
    displayProjection: "EPSG:4326"
});
permalink.setMap(map);

2. Parameter-Objekt (zoom + lat/lon) erzeugen lassen


var params = permalink.createParams();

3. in URL ersetzen

a) einfaches Beispiel zum Testen:


console.log( OpenLayers.String.format('<a href="http://www.openstreetmap.org/#map=${zoom}/${lat}/${lon}&layers=N">Permalink</a>', params) );

b) Idee: Parameter in allen Links der HTML-Seite ersetzen


var links = document.getElementsByTagName('a');
for(var i = 0; i < links.length; i++) { 
    links[i].href = OpenLayers.String.format(links[i].href, params); 
}