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.

Duncan Rager
quelle

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
quelle
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!

tUrG0n
quelle
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.

Blazinec
quelle