Position abgreifen

Ich möchte auf klick die aktuelle Position des Fadenkreuz in der Mitte des Bildschirms auslesen.
Ich will mit dem Handy durch schieben des Bildschirm navigieren. Die Position des Mouseklicks bekomm ich hin, aber die will ich nicht, ich will die der Mitte.

Wer kann helfen - Dank euch

Klaus

Mein Script

  <script>
    var map = L.map('map').setView([48.7603058,9.0812284],12);
	
    L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
      attribution: '<a href="http://osm.org/copyright">&copy; </a> '
    }).addTo(map);

  L.control.mapCenterCoord({
	  latlngFormat: 'DD',
      latlngDesignators: true
      }).addTo(map);


    map.on('click', function(e) {
    alert("Lat, Lon : " + lat + ", " + lng)
})


	

mit

 alert("Lat, Lon : " + e.latlng.lat + ", " + e.latlng.lng)

kann ich die Mouseklick Position auslesen

code kann ich dir nicht liefern, aber ich vermute du musst die Kartengrösse in Pixeln ermitteln, daraus dann die Mitte in Pixelkoordinaten, und diese dann in lat long umrechnen lassen.

Ich liefere ebenfalls keinen Code und empfehle stattdessen, zu überlegen, wo sich das Kreuz bezüglich der Kartenabmessungen befindet. Wenn du das rausgefunden hast, kannst du in der vorzüglichen Dokumentation von https://leafletjs.com/ nachschlagen, welche Methoden das Objekt L.map so bietet. Da gibt es eine, welche du für deinen Zweck benutzen kannst.

Tip: Die Vermutung von dieterdreist, irgendwas umrechnen zu müssen, ist so nicht richtig, das übernimmt Leaflet dankenswerter Weise ganz von selbst.

Viel Erfolg.

…gibt es auch eine deutsche Leaflet Anleitung? Bisher war meine Suche erfolglos… :wink:

deswegen schrieb ich ja “umrechnen lassen

Irgendwo bestimmt, mir ist allerdings nichts bekannt.

Sorry, hatte ich wohl nicht recht gelesen - war wohl noch nicht ganz wach wg. Kaffeemangel am frühen Morgen :wink:

Die Methoden habe ich bereits gelesen, deswegen ja die Frage. Solabd ich die Karte verschiebe (Handy Hand) habe ich keinen Bezugspunkt mehr. Euere “Lies selber Tips in Ehren” aber das hilft nicht.

Ich brauch keine “Code” sondern einen konkreten Tip.

Das von Dir bereits eingebundene MapCenterCoord Plugin verwendet
map.getCenter():


  _getMapCenterCoord: function () {
    if (this.options.projected) return this._getProjectedCoord(this._map.options.crs.project(this._map.getCenter()));
    return this._getLatLngCoord(this._map.getCenter());
},

https://github.com/xguaita/Leaflet.MapCenterCoord/blob/614445ce5e06b1ce20f78b08aad0b9f6e64d6c37/src/L.Control.MapCenterCoord.js#L76-L79

Wäre mir auch nichts bekannt und ich vermute, dass es da auch wenig gibt. Für OpenLayers gäbe es vermutlich mehr.

Hab noch bei der FOSSGIS Konferenz gesucht, aber auf die Schnelle nur einen bezahlten Workshop gefunden (zu dem es keine Aufzeichnung oder Folien gibt):
https://www.fossgis-konferenz.de/2018/programm/event.php?id=5375
Der Referent schreibt wohl ein Buch, das wird aber vermutlich auch Englisch sein.

Buch ist in Englisch verfasst und kostet Dollars.Als PDF Verfügbar

Konkreter Tipp von ikonor.

Code von mir:

L.Map.extend({ getCenter : function () {
		if (this.options.projected) return this._getProjectedCoord(this._map.options.crs.project(this._map.getCenter()));
		return this._getLatLngCoord(this._map.getCenter());
		}
	});

var mymap = L.map(...);

	mymap.on('click', 	function (clickEvent) {
		console.log("Center is "+mymap.getCenter());
	});

Erklärung: du brauchst das clickEvent ja garnicht inhaltlich auszuwerten, alleine die Tatsache das geklickt wurde reicht ja. Bei Klick ziehst Du dir die aktuelle Mittelpunktkoordinate nach ikonors gefundenem code-Schnipsel.

Muss aber auch nicht helfen, oder hast du das auf nem Smartphone getestet? Smartphones und Tablets haben leider die Angewohnheit, click, tap, drag’n’drop ein bisschen anders zu interpretieren.
Also wenn ich mit meinem Android Smartphone in der Mobilen Ansicht auf der Hauptkarte osm.org rumschieben und rumzoomen will, dann ist das ein kalter Kraus … deswegen schalte ich dort manchmal bewusst auf “Desktopansicht” um :confused:

Tja, wenn du mit meinem Tip nichts anfangen kannst, hast du ihn nicht verstanden, genauer den Part mit der “Vorüberlegung”. Konkrete Tips und Code hast du ja jetzt zur Genüge bekommen.

@gormo

Hab jetzt mal nen mouseup event genommen. Die Daten habe ich jetzt als console.log.
Jetzt gehts weiter - Danke

Hier mein Script, wenns einer brauchen kann

<script>
  var la= 48.7603058
  var lb=9.0812284
  var z=12
 
  var map = L.map('map').setView([la,lb],z);
	
     L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
      attribution: '<a href="http://osm.org/copyright">&copy; </a> '
    }).addTo(map);

   
  L.control.mapCenterCoord({
	  latlngFormat: 'DD',
      latlngDesignators: false,
	  template: '{y} | {x}', 
   }).addTo(map);
	
 

 	  
    map.on('mouseup', 	function (clickEvent) {
		console.log("Center is "+map.getCenter());
	});

	
	
L.Map.extend({ getCenter : function () {
		if (this.options.projected) return this._getProjectedCoord(this._map.options.crs.project(this._map.getCenter()));
		return this._getLatLngCoord(this._map.getCenter());
		}
	});

	
  </script>