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 2015-12-03 15:11:54

brogo
Member
From: 54,11 +-1°
Registered: 2009-06-02
Posts: 553

Openlayers: Geolocation

Hallo!

Ich habe mir Netzwolfs POI-Editor [1] installiert. Wie bekomme ich nun hin, daß beim Öffnen der Seite auf meine aktuelle (reale) Position gezoomt wird?

Meine Programmierkenntnisse tendieren leider gegen Null.

Christian

[1] http://www.netzwolf.info/ol2/poi_editor_anleitung

Offline

#2 2015-12-03 21:18:09

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

Re: Openlayers: Geolocation

Hast du dies auch gesehen? http://www.netzwolf.info/ol2/geolocation.htm

	//----------------------------------------------------------------------------
	//	Wenn kein Permalink genutzt, nutze Geolokalisierung
	//	oder stelle bestimmten Bereich dar.
	//----------------------------------------------------------------------------

	if (!map.getCenter()) {

		//--------------------------------------------------------------------
		//	zoome per Default auf die BBOX von DE
		//--------------------------------------------------------------------

		function zoomToDefault() {

			map.zoomToExtent(new OpenLayers.Bounds(5.88, 47.26, 15.04, 54.91).
				transform(map.displayProjection, map.getProjectionObject()));
		}

		if (navigator.geolocation) {

			var done = false;

			navigator.geolocation.getCurrentPosition (

				//----------------------------------------------------
				//	Geolocation gefunden
				//----------------------------------------------------

				function (position) {

					//--------------------------------------------
					//	Dumm gelaufen, Timeout war schneller
					//--------------------------------------------

					if (done) return; done = true;

					//--------------------------------------------
					//	Nur zur Demo: Anzeige der Position
					//--------------------------------------------

					alert ('Geolocation meldete:\nLon: ' +
						position.coords.longitude +
						'\nLat: ' +
						position.coords.latitude);

					//--------------------------------------------
					//	Gewuenschte Zoomstufe
					//--------------------------------------------

					var geoLocationZoom = 14;

					//--------------------------------------------
					//	Konvertiere Koordinaten und PanZoom
					//--------------------------------------------

					map.setCenter (new OpenLayers.LonLat
						(position.coords.longitude, position.coords.latitude).
						transform(new OpenLayers.Projection("EPSG:4326"),
                					map.getProjectionObject()), geoLocationZoom);
        			},

				//----------------------------------------------------
				//	Keine Geolocation gefunden
				//----------------------------------------------------

				function (error) {

					//--------------------------------------------
					//	Dumm gelaufen, Timeout war schneller
					//--------------------------------------------

					if (done) return; done = true;

					//--------------------------------------------
					//	Zeige Grund des Malheurs
					//--------------------------------------------

					alert ('Geolocation gescheitert (' + error.code + '):\n"' + error.message + '"');

					//--------------------------------------------
					//	Defaultdarstellung
					//--------------------------------------------

					zoomToDefault();
				},

				//----------------------------------------------------
				//	Parameter, siehe z.B.:
				// https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/Using_geolocation
				//----------------------------------------------------

				{enableHighAccuracy: true, maximumAge: 1000}
			);

			//------------------------------------------------------------
			//	Wird die Rueckfrage des browsers verneint,
			//	so werden leider weder die success noch die failure
			//	Funktion aufgerufen.
			//	Damit die Karte nicht haengt, starte ein Timeout.
			//	(20000 = 20000 Millisekunden = 20 Sekunden)
			//------------------------------------------------------------

			setTimeout(function(){

				//----------------------------------------------------
				//	Gut gelaufen, der Geolocator war schneller.
				//----------------------------------------------------

				if (done) return; done = true;

				//----------------------------------------------------
				//	Nur zur Demo: Anzeige des Malheurs
				//----------------------------------------------------

				alert ('Timeout...');

				//----------------------------------------------------
				//	Defaultdarstellung
				//----------------------------------------------------

				zoomToDefault();
			}, 20000);

		} else {

			//------------------------------------------------------------
			//	Ich aaaaabe gar kein geolocation-Objekt!
			//------------------------------------------------------------

			alert ('navigator.geolocation nicht verfuegbar.');

			//------------------------------------------------------------
			//	Defaultdarstellung
			//------------------------------------------------------------

			map.zoomToExtent(bounds);
		}
	}

sollte funktionieren, wenn du dies zwischen folgendem einbaust:

	//----------------------------------------------------------------------------
	//	Kartenlayer
	//----------------------------------------------------------------------------

	map.addLayer (new OpenLayers.Layer.OSM.Mapnik('Mapnik'));

	//****************************************************************************
	//**	POI-Editor-Layer
	//****************************************************************************

viel erfolg

Last edited by reneman (2015-12-03 21:19:01)


» 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 2015-12-04 11:34:02

brogo
Member
From: 54,11 +-1°
Registered: 2009-06-02
Posts: 553

Re: Openlayers: Geolocation

reneman wrote:

sollte funktionieren, wenn du dies zwischen folgendem einbaust:

Danke! Hat geklappt!

Christian

Offline

Board footer

Powered by FluxBB