ym.services.Area

Initialisierung

Die Klasse Area holt sich anhand der GeoJson-WebService-Schnittstelle die Polygone einer Region.

Wird die Area-Klasse ohne erweiterte Kartenfunktionalitäten eingesetzt, kann wie folgt auf das GeoJson zugegriffen werden:

Codebeispiel: Initialisierung Flächenservice

ym.ready(function () {
   var area = new ym.services.Area();

   area.on('success', function (request, response) {
      console.log(response.body);
   });

   area.load({lat: 51.163375, lng: 10.447683});
});

Constructor(options)

Der Konstruktor nimmt dieselben Optionen entgegen, die auch die Klasse ym.provider.GeoJSON entgegennimmt.

Methoden

Area.load(LatLng, levels, providerId) ab v3

Lädt GeoJson-Polygone vom GeoJson-WebService.

Parameter: latLng

Die Geo-Koordinate, in der gesucht werden soll.

Parameter: levels

Optional; Standard: [1, 2]. Es können mehrere Werte übegeben werden.

Level Bedeutung
0 Land
1 Bundesland
2 Regierungsbezirk
3 Landkreis
4 PLZ
5 Gemeinde
6 Stadtteil

Parameter: providerId

Optional; Standard: OSM

Beispielaufruf

area.load({lat: 51.163375, lng: 10.447683});  

Area.addTo(layer) ab v3

Die addTo-Methode dient dazu, einen Bereich für einen Kartenlayer zu registrieren und automatisch zu aktualisieren, sobald ein neues GeoJson verfügbar ist. Das bedeutet, dass man kein weiteres GeoJson-Objekt erstellen und man sich um den Success-Listener nicht kümmern muss. Ab dem Zeitpunkt der Registrierung auf den Layer wird die Darstellung des GeoJSON immer aktualisiert, sobald ein neuer Request an die GeoJSON-Schnittstelle stattfindet. Der Kartenlayer muss hierbei eine Instanz von ym.provider.Map sein.

Parameter: layer

Der von ym.provider.Map abgeleitete Kartenlayer, auf dem der Bereich gezeichnet werden soll.

Beispielaufrufe

Das Beispiel ist vollständig; Sie können es lokal in einer Datei abspeichern und im Browser aufrufen. Sie müssen lediglich den Wert für den apiKey vorher ersetzen.

Im ersten Beispiel werden die administrativen Level 1 bis 3 angefordert, das heißt, Bundesland, Regierungsbezirk und Landkreis.

Codebeispiel: Beispielaufruf (Lvl. 1 - 3)

<!DOCTYPE html>
<html>
<head lang="en">
	<meta charset="UTF-8" />
</head>
<body>
	<!-- Stelle, an der eine Karte angezeigt werden soll. Auf die ID wird unten im Skript verwiesen. -->
	<div id="map" style="height: 400px; width: 700px;"></div>

	<!-- Laden der SmartMaps-API. -->
	<script src="https://www.yellowmap.de/api_rst/api/loader/?apiKey={API_KEY}&libraries=free-3"></script>
	
	<!-- Zugriff auf die SmartMaps-API. -->
	<script>
		ym.ready(function (modules) {
		   var provider = modules.provider;

		   var map = new provider.Map("map", {
			  center: new provider.LatLng(51.163375, 10.447683), // Mittelpunkt von Deutschland
			  zoom: 6
		   });

		   var area = new ym.services.Area({
			  onEachFeature: function (feature, layer) {
				 var popupContent = "";
				 for (var k in feature.properties) {
					popupContent += "<b>" + k + "</b> " + feature.properties[k] + "<br>";
				 }
				 layer.bindPopup("<pre>" + popupContent + "</pre>");
			  }
		   });
		   area.addTo(map);

		   area.load(map.getCenter(), [1,2,3]);
		   
		   window.map = map;
		});
	</script>
</body>
</html>

Alternativ kann man eigenhändig instanziieren und den Success-Listener verwenden:

Codebeispiel: Beispielaufruf (Success-Listener)

<!DOCTYPE html>
<html>
<head lang="en">
	<meta charset="UTF-8" />
</head>
<body>
	<!-- Stelle, an der eine Karte angezeigt werden soll. Auf die ID wird unten im Skript verwiesen. -->
	<div id="map" style="height: 400px; width: 700px;"></div>

	<!-- Laden der SmartMaps-API. -->
	<script src="https://api.yellowmaps.eu/api_rst/api/loader/?apiKey={API_KEY}&libraries=free-3"></script>
	
	<!-- Zugriff auf die SmartMaps-API. -->
	<script>
		ym.ready(function (modules) {
		   var provider = modules.provider;
		   
		   var map = new provider.Map("map", {
			  center: new provider.LatLng(51.163375, 10.447683), // Mittelpunkt von Deutschland
			  zoom: 6
		   });
		   
		   var geoJson = new provider.GeoJSON(null, {
			  onEachFeature: function (feature, layer) {
				 var popupContent = "";
				 for (var k in feature.properties) {
					popupContent += "<b>" + k + "</b> " + feature.properties[k] + "<br>";
				 }
				 layer.bindPopup("<pre>" + popupContent + "</pre>");
			  }
		   });

		   var area = new ym.services.Area();
		   area.on('success', function (request, response) {
			  geoJson.addData(response.body);
		   });
		   
		   area.load(map.getCenter(), [1,2,3]);

		   geoJson.addTo(map);
		   
		   window.map = map;
		});
	</script>
</body>
</html>

Area.removeFrom(layer) ab v3

Entfernt das GeoJson vom Layer.

Ereignisse

Die Basis der Area-Klasse ist die Request-Klasse. Entsprechend gibt es auch die Event-Listener success und error, die ankündigen, ob eine Anfrage erfolgreich war oder fehlgeschlagen ist.