Erstellen einer Bing- und Google-Kachelebene für die Broschüre


8

Ich möchte die Leaflet Javascript Library verwenden, um sowohl eine Google- als auch eine Bing Tile-Ebene anzuzeigen, obwohl ich nicht sicher bin, wie die URL erstellt werden soll. Die Dokumentation zeigt ein Beispiel mit OSM:

var cloudmadeUrl = 'http://{s}.tile.cloudmade.com/YOUR-API-KEY/997/256/{z}/{x}/{y}.png',
cloudmade = new L.TileLayer(cloudmadeUrl, {maxZoom: 18});

Aber aus irgendeinem Grund kann ich dies weder für Bing noch für Google duplizieren. Irgendwelche Ideen?

Vielen Dank.

Antworten:


11

Google Maps

Google Maps verbietet solche Verwendungen. Der einzige zulässige Zugriff auf ihre Inhalte erfolgt über die Maps-API (siehe Abschnitt 10.1 des ToS).

Bing Maps-Webdienste

Bing Maps ist der einzige mir bekannte kommerzielle Anbieter, der solche Verwendungen über seine Webdienstfunktion zulässt . Sie benötigen jedoch einen API-Schlüssel.

Bing wird etwas nervig, da sie Quadkeys (einen eindeutigen Index für jede Kachel) anstelle von {x, y} -Koordinaten verwenden (guter Vergleich dort). Sie müssen daher eine neue L.ILayerImplementierung erstellen , die diesem URL-Schema entspricht.

Da Sie natürlich nicht der erste sind, der diese Anfrage hat;), haben einige andere solche Implementierungen bereits codiert. Eine ist eine ausstehende Pull-Anfrage an das Leaflet-Repo, die andere ist direkt als Gist verfügbar . Versuchen Sie, was Sie bevorzugen, und fügen Sie der Pull-Anfrage Ihr Gewicht hinzu, damit sie schneller zusammengeführt wird :)


MattiSG, implizieren die Einschränkungen von Google, dass OpenLayers nicht im Einklang steht? Die API bietet eine Klasse für eine Google-Ebene in Ihrer OpenLayers-Karte: dev.openlayers.org/releases/OpenLayers-2.11/doc/apidocs/files/… Ist es in Ordnung, Google-Kartendaten mit OpenLayers oder Leaflet darzustellen, solange die Die Anforderung, die Daten abzurufen, erfolgt über die Maps-API.
— Ryan Clark

@RyanClark Nun, aus Google ToS 10.1.1: "Sie dürfen beispielsweise nicht über andere Schnittstellen oder Kanäle als die Karten-APIs auf Kartenkacheln oder Bilder zugreifen." Solange OpenLayers eine Abstraktionsschicht über der offiziellen Maps-API bereitstellt , ist dies in Ordnung. Es wäre nicht in Ordnung, wenn es direkt auf die Kacheln zugreifen würde. Zumindest verstehe ich das so;)
— MattiSG

Google hat OpenLayers schriftlich die Erlaubnis erteilt (ich kann den Beitrag, auf den ich verlinken kann, derzeit nicht finden). Sie sind also im Klaren, wenn Sie OpenLayers verwenden.
— Devdatta Tengshe

2

Ich weiß, Google Maps verbietet es, aber wenn Sie dieses Plugin verwenden, können Sie es tun.

Überprüfen Sie die google.htmlDatei unter dem examplesOrdner.

Ändern Sie Zeile 15 in:

var ggl = new L.Google("ROADMAP);

Es sollte dann für dich funktionieren :)

Ich weiß jedoch nicht, ob dies den Nutzungsbedingungen von Google entspricht!


2

Sie können versuchen, Bing Maps-Kacheln direkt zu verwenden. Ich denke, dies ist nicht mit Bing TOS kompatibel, aber registrieren Sie den Schlüssel bei Microsoft, geben Sie ihnen einen Copyright-Link von der Kartenimplementierung, und es sollte kein Problem geben. Schauen Sie sich zum Beispiel Maps of All an, um Live-Bing-Kacheln in der Google Maps-API zu sehen. Wenn Sie dann http://www.mapsofall.com/public/js.js überprüfen , gibt es eine konkrete URL für Bing-Kacheln.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.