Membuat Layer Bing dan Google Tile untuk Leaflet

8

Saya ingin menggunakan Leaflet Javascript Library untuk menampilkan Google dan Bing Tile Layer, meskipun saya tidak yakin bagaimana membuat url. Dokumentasi menunjukkan contoh menggunakan OSM:

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

Tetapi untuk beberapa alasan saya tidak dapat menduplikasi ini untuk Bing atau Google. Ada ide?

Terima kasih.

Duncan Rager
sumber

Jawaban:

11

Google Maps

Google Maps melarang penggunaan semacam itu. Satu-satunya akses yang diizinkan ke konten mereka adalah melalui Maps API mereka (lihat bagian 10.1 dari ToS).

Layanan Web Bing Maps

Bing Maps adalah satu-satunya penyedia komersial yang saya tahu yang memungkinkan penggunaan seperti itu, melalui fitur Layanan Web mereka . Anda akan memerlukan kunci API.

Bing akan sedikit menyebalkan, karena mereka menggunakan quadkey (indeks unik untuk setiap ubin) daripada koordinat {x, y} ( perbandingan bagus di sana). Karena itu Anda harus membuat L.ILayerimplementasi baru yang sesuai dengan skema URL ini.

Karena Anda tentu saja bukan yang pertama yang memiliki permintaan ini;), beberapa yang lain telah mengkodekan implementasi semacam itu. Salah satunya adalah permintaan tarik tertunda ke repo Leaflet, yang lainnya langsung tersedia sebagai Intisari . Coba mana yang Anda suka, dan tambahkan bobot Anda ke permintaan tarik untuk membuatnya bergabung lebih cepat :)

MattiSG
sumber
MattiSG, apakah batasan Google menyiratkan bahwa OpenLayers sudah out-of-line? API menyediakan kelas untuk Google Layer dalam peta OpenLayers Anda: dev.openlayers.org/releases/OpenLayers-2.11/doc/apidocs/files/... Tidak apa-apa untuk menggambarkan data peta Google menggunakan OpenLayers atau Leaflet, asalkan permintaan untuk mendapatkan data dibuat menggunakan Maps API?
Ryan Clark
@RyanClark Well, dari Google ToS 10.1.1: “Misalnya, Anda tidak boleh mengakses ubin peta atau pencitraan melalui antarmuka atau saluran selain dari Maps API (s).”. Jadi, selama OpenLayers menyediakan lapisan abstraksi di atas Maps API resmi , tidak apa-apa. Tidak akan masalah jika mengakses ubin secara langsung. Setidaknya, begitulah cara saya memahaminya;)
MattiSG
Google telah memberikan izin secara tertulis kepada OpenLayers (saya tidak dapat menemukan pos sekarang untuk ditautkan ke), jadi Anda berada di tempat yang jelas jika Anda menggunakan OpenLayers.
Devdatta Tengshe
2

Saya tahu google maps melarangnya, namun jika Anda menggunakan plugin ini , Anda dapat melakukannya.

Periksa google.htmlfile di bawah examplesfolder.

Ubah baris 15 menjadi:

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

Ini seharusnya bekerja untuk Anda :)

Namun, saya tidak tahu apakah ini mematuhi TOS google!

tUrG0n
sumber
2

Anda dapat mencoba menggunakan ubin peta Bing secara langsung. Saya pikir ini tidak sesuai dengan TOS Bing, tetapi daftarkan kunci di Microsoft, beri mereka tautan hak cipta dari implementasi peta, dan seharusnya tidak ada masalah. Lihat misalnya Peta Semua untuk melihat ubin Bing langsung di dalam Google maps API. Jika kemudian Anda memeriksa http://www.mapsofall.com/public/js.js , ada URL konkret ubin Bing.

Blazinec
sumber