OpenLayers vs Google Maps? [Tutup]


169

Saya telah menggunakan Google Maps beberapa kali, tetapi bertanya-tanya tentang OpenLayers .
Sebelum memulai segala jenis pengkodean, berikut adalah beberapa pertanyaan yang muncul di benak saya,

  • Mengapa saya menggunakan OpenLayers alih-alih Google Maps?
    • Kecuali untuk lisensi OSS-nya
    • Apakah Anda menghadapi situasi di mana Anda akan merekomendasikan absolutly tidak menggunakan OpenLayers?
    • Saya melakukan pencarian tentang "OpenLayers" di Stack Overflow ; tidak banyak jawaban. Apakah ini berarti solusi ini tidak banyak digunakan? Mungkinkah itu menjadi masalah bagi kelangsungan proyek dalam jangka panjang?
  • Bagi Anda yang sudah menggunakan OpenLayers: apakah ada jebakan / masalah umum yang mungkin saya temui?
    • Bagaimana dengan menggunakan Kerangka JavaScript dengannya? Saya pernah melihatnya menggunakan Prototipe , dan saya tahu Prototipe, jadi tidak masalah. Tetapi bagaimana dengan menggunakan sesuatu yang lain seperti Mootools ? (Yang tidak kompatibel dengan Prototipe, BTW)
    • Apakah ada masalah terkait kecepatan dan kinerja? Saya membutuhkan aplikasi saya untuk menjadi responsif dan tidak bisa menunggu berjam-jam untuk menampilkan peta.
  • Apakah ada peta yang tersedia di banyak tempat, atau ada banyak yang hilang?
    • Yaitu, saya di Prancis, dan perlu aplikasi saya untuk bekerja setidaknya untuk kota-kota besar ... Apakah itu baik-baik saja?
    • jika tidak, apakah mudah untuk menemukan layer dan visualisasi untuk OpenLayers dan mengintegrasikannya?
  • Apakah ada API untuk menampilkan jalan?
    • Misalnya, untuk menunjukkan jalan yang hanya satu arah.
    • Jika ya, bagaimana saya bisa melakukan itu? Apakah saya harus memiliki semacam file yang berisi informasi jalan itu, dan, kemudian, menampilkannya di peta sendiri?
  • Apakah Anda tahu tutorial yang bagus untuk OpenLayers?

Saya belum mencobanya, itu baru saja keluar dari pertanyaan biru ...


Karena penasaran, mengapa "lisensi OSS" menjadi poin yang mendukung OpenLayers, kecuali untuk alasan filosofis? Dengan asumsi lisensi Google memungkinkan Anda untuk melakukan apa yang Anda inginkan secara gratis, mengapa itu mempengaruhi keputusan Anda?
Tandai

7
@ Mark Ada masalah dengan lisensi Google. IANAL tetapi saya mengerti bahwa menampilkan data di Google Maps memberi Google lisensi tanpa batas untuk menyalin, memodifikasi, mengubah, dan mendistribusikan kembali data Anda. Misalnya , ilegal memperlihatkan data apa pun yang berasal dari produk SIG Survei Survei Ordnance Inggris di Google Maps. Keuntungan lain dari OSS adalah bahwa OpenLayers tidak tunduk pada keinginan satu organisasi. Meskipun secara praktis, Anda mungkin dapat mempercayai akal sehat Google (dan uang, dan alasan bisnis) untuk mendukung Google Maps di masa depan
MarkJ

1
Artikel-artikel ini mungkin bermanfaat: EveryBlock - Tentang Peta Kami: blog.everyblock.com/2008/feb/18/maps Daftar Selain - Kendalikan Peta Anda (juga dari EveryBlock) alistapart.com/articles/takecontrolofyourmaps
mg1075

8
Google Maps tidak sepenuhnya gratis ( google.com/support/forum/p/maps/… ). Lisensi tergantung pada bagaimana Anda menggunakannya.
Mo

Ada baiknya memeriksa situs GIS.SE untuk semua hal geografi jika Anda tidak dapat menemukan jawaban di SO.
Roy

Jawaban:


158

Ini adalah pertanyaan yang sangat bagus! Saya adalah pengembang dan penggemar OpenLayers profesional, jadi saya akan menjawab pertanyaan Anda dari perspektif itu.

Mengapa saya menggunakan OpenLayers alih-alih Google Maps?

  • Fleksibilitas: Anda tidak terikat dengan penyedia atau teknologi peta tertentu. Anda dapat mengubah kapan saja dan tidak perlu menulis ulang seluruh kode Anda. Google, Yahoo, Microsoft, WMS, Server ArcGIS, MapServer, dll. Semuanya didukung di luar kotak.
  • Dukungan Vektor: Dukungan yang lebih baik untuk titik, polyline, dan poligon.
  • Kontrol: Anda memiliki kemampuan untuk menambahkan fitur baru yang mungkin Anda butuhkan. Saya pribadi menulis tiga plugin untuk OpenLayers, dua di antaranya adalah atau akan menjadi bagian dari sumber.
  • Debugging: Lebih mudah untuk di-debug ketika Anda dapat menelusuri kode sumber!

Saya tidak akan khawatir sama sekali tentang kelangsungan jangka panjang proyek. Ini adalah perpustakaan pemetaan sisi klien sumber terbuka utama.

Apakah ada jebakan / masalah umum yang mungkin saya temui?

  • Perangkap terbesar yang saya temui adalah bekerja dengan proyeksi Web Mercator (Google). Mungkin merepotkan untuk menampilkan data vektor yang berada dalam proyeksi umum dan nyata seperti WGS 84 ke dalam peta OpenLayers menggunakan Google, Yahoo, dan peta dasar Microsoft. Contohnya adalah temanmu.

Kompatibilitas Kerangka JavaScript

  • Saya menggunakan kerangka kerja jQuery untuk semua pekerjaan saya, dan satu-satunya masalah yang saya miliki adalah mereferensikan jQuery setelah OpenLayers. Selain itu, pelayarannya lancar.
  • Performa luar biasa! Satu-satunya masalah adalah dengan server peta Anda atau menambahkan terlalu banyak vektor ke peta Anda.

Apakah ada peta yang tersedia untuk banyak tempat?

  • Seperti yang saya katakan, Anda dapat menggunakan peta situs dari hampir semua sumber untuk di mana saja di dunia.

Apakah ada API untuk menampilkan jalan?

  • Saya akan memeriksa CloudMade! Mereka telah mengubah proyek OpenStreetMap menjadi layanan ubin peta dan memungkinkan penataan gaya. Saya percaya bahwa Anda dapat bergaya jalan satu arah (per contoh Anda) dengan cara tertentu. Zona Pengembang CloudMade .

Apakah Anda tahu tutorial yang bagus untuk OpenLayers?

Saya harap ini bermanfaat. Dan saya sekitar Stack Overflow jika Anda memiliki pertanyaan!


5
Hai! Terima kasih banyak atas jawaban ini, itu memang berguna! Jelas ada beberapa poin menarik (dukungan vektor yang lebih baik mungkin akan berguna untuk proyek yang sedang saya pikirkan; dan itu bukan satu-satunya hal yang Anda katakan yang menarik!); Mungkin suatu saat saya akan mengajukan beberapa pertanyaan lain: Saya belum mulai bekerja dengan OL (pertanyaan ini cukup "prelimar" ^^), tetapi waktunya akan tiba, saya kira, mengingat jawaban yang saya dapatkan!
Pascal MARTIN

5
+1. Saya sudah mencoba untuk tidak mengetik komentar ini, tetapi saya tidak dapat menahan diri. WGS84 bukan proyeksi. (Layak untuk mencoba mempelajari hal ini - Saya dengan susah payah mengambil sedikit SIG, dan itu sangat membantu dengan hal-hal peta.)
MarkJ

1
WGS84 adalah sistem koordinat geografis (digunakan untuk menampilkan titik lat / panjang pada ellipsoid). Web mercator cukup banyak merupakan proyeksi web defacto.
Roy

35

Ini tidak selalu menjadi pertanyaan OpenLayers ATAU Google Maps. Anda dapat menggunakan Google Maps untuk latar belakang peta Anda di OpenLayers. Beberapa jawaban yang lebih spesifik:

Mengapa OpenLayers?

  • OpenLayers dapat menggabungkan peta dari berbagai sumber (latar belakang Google Maps, overlay WMS, data vektor dari file KML atau GML atau WFS dll)
  • Anda dapat membuat gaya OpenLayers jauh lebih banyak daripada Google Maps
  • Sumber terbuka, Anda dapat memeriksa kode sumber saat debugging
  • Jika Anda membutuhkan ketelitian tinggi di peta, gunakan OpenLayers dengan backend server peta yang sesuai daripada Google Maps untuk mendapatkan proyeksi peta yang lebih baik (Google Maps mengasumsikan bahwa bumi adalah bola yang sempurna)

Perangkap

  • Jika Anda ingin menggunakan data vektor (WFS) dari server lain, Anda memerlukan proxy, karena batasan skrip lintas situs

Performa

  • Tergantung pada kecepatan backend peta
  • Menampilkan banyak fitur vektor (batas bergantung pada browser, tetapi katakan> 200 pada satu tampilan) membutuhkan waktu, tetapi itu lebih merupakan masalah browser daripada masalah dengan OpenLayers

Kerangka kerja JavaScript

  • Lihatlah GeoExt , yang merupakan ExtJS + OpenLayers, misalnya

Peta yang tersedia

  • OpenLayers tidak datang dengan backend peta. Anda dapat menggunakan Google Maps, Yahoo Maps, MS Virtual Earth dll, atau layanan WMS dan WFS mana pun yang dapat Anda akses

Jawaban yang bagus; terima kasih atas semua informasi ini! Saya belum tahu detailnya, tetapi saya mungkin harus menggunakan beberapa data dari server saya sendiri, jadi semuanya harus baik-baik saja, terutama dengan kemampuan untuk mengintegrasikan beberapa backend (Jika saya mengerti dengan benar ^^ Saya akan memiliki kesempatan untuk menguji bahwa dalam beberapa hari, saya harap ;-))
Pascal MARTIN

1
@ Pascal, saya senang jawabannya bermanfaat. Saya dapat menambahkan bahwa komunitas OpenLayers sangat aktif dan milis cukup membantu.
Nils Weinander

Jika ada sesuatu yang ingin Anda lakukan yang tidak tercakup dalam halaman contoh dev Anda kemungkinan besar tidak dapat melakukannya di peta google. misalnya, bahkan skrip lintas situs tidak harus dicakup oleh proksi: openlayers.org/dev/examples/cross-origin.html
Glenn Plas

23

Saya belum melihat banyak kehadiran dari pengguna OpenLayers di SO tetapi mereka di luar sana. The OpenLayers milis yang cukup aktif (aku di Pengguna dan Dev dan melihat di mana saja 50-100 email hari membahas berbagai hal. Anda dapat mencari daftar dari link tersebut juga.).

Saya tidak bisa menjawab semua pertanyaan Anda, tetapi satu hal yang akan saya kemukakan adalah bahwa OpenLayers dan google maps tidak saling eksklusif. OpenLayers adalah pustaka javascript dan Anda dapat menggunakannya untuk berinteraksi dengan google maps. Lihat contoh ini: OpenLayers menggunakan google maps . Dan inilah halaman contoh OpenLayers utama .


Terima kasih atas jawaban itu! Sangat menyenangkan untuk melihat daftar mailling cukup aktif, sebelum mulai bekerja dengan proyek ^^
Pascal MARTIN

13

Satu hal yang belum sepenuhnya dibuat di sini adalah bahwa menggunakan OpenLayers menghindari berbagai batasan tempat Google pada persyaratan layanan untuk API petanya, termasuk:

  • Anda tidak dapat menggunakan peta Google secara sah hanya di bagian situs Anda yang memerlukan pembayaran untuk mengakses, atau untuk situs pribadi yang tidak dapat didaftar publik (misalnya intranet perusahaan). (IANAL, tetapi lihat Ketentuan Layanan, 9.1 dan FAQ )

  • Anda tidak dapat secara legal (atau secara praktis) menggunakan Google API untuk aplikasi offline (yaitu tempat ubin dilayani dari mesin Anda sendiri). Bahkan jika tidak ada batasan hukum, Google membuat ini secara teknis sangat sulit, sementara OpenLayers membuatnya mudah.

  • Google berhak untuk menutup akses ke API jika Anda menunjukkan peta dengan konten yang menurutnya tidak menyenangkan. Contoh yang diberikan dalam FAQ adalah peta obat-obatan terlarang, yang memberikan pengertian yang baik tentang area abu-abu yang mungkin dicakup oleh pembatasan ini.

Lihat FAQ ini dan Ketentuan Layanan untuk lebih jelasnya.

Semua yang dikatakan, sebagai pengembang Google Maps lama yang baru-baru ini mulai menggunakan OpenLayers, saya merasa bahwa Google Maps memiliki dokumentasi yang lebih baik, komunitas pengguna yang lebih besar, dan API yang lebih jelas dan lebih stabil daripada OpenLayers. Jadi, Anda harus melakukan trade-off di suatu tempat.


"Anda tidak dapat menggunakan peta Google secara legal di bagian situs Anda yang memerlukan pembayaran untuk mengakses, atau untuk situs pribadi yang tidak dapat didaftar publik (misalnya intranet perusahaan)." Itu tidak benar. Anda dapat menggunakan Google Maps di bagian berbayar di situs Anda selama mayoritas pengguna dapat menggunakan situs dan peta Anda tanpa membayar. Misalnya situs web real estat. Poster harus membayar untuk mendaftar rumah mereka, tetapi sebagian besar pengguna dapat menjelajahi situs tanpa membayar. Dalam hal ini keduanya memiliki akses ke Google Maps.
Craig

Terima kasih - saya maksudkan bahwa Anda tidak dapat menggunakan API secara eksklusif pada bagian pembayaran yang diwajibkan. Saya telah memperbarui posting saya dan menambahkan lebih banyak tautan untuk mengatasi masalah ini.
nrabinowitz

OpenLayers menggunakan Google Maps API secara internal sehingga Anda tunduk pada lisensi yang sama. osgeo-org.1560.x6.nabble.com/...
Alfredo Osorio

@ AlfredoOsorio - ya, IFF Anda menggunakan lapisan Google. Ada banyak sumber ubin lainnya.
nrabinowitz

12

Ini benar-benar tergantung pada apa yang ingin Anda gunakan peta. Untuk hanya memplot poin pada peta, Google Maps akan baik-baik saja. Lapisan peta untuk Google Maps juga cukup rinci. OpenLayers di sisi lain menawarkan fungsionalitas yang jauh lebih banyak dan sangat dapat dikembangkan.

OpenLayers memiliki banyak contoh untuk Anda mulai.

Adapun peta, OpenLayers hanya sebuah API sehingga Anda harus menyediakannya akan memetakan lapisan. Google Maps API akan terbatas pada lapisan peta yang disediakan oleh google. Dengan OpenLayer Anda dapat menampilkan hampir semua layanan peta yang tersedia untuk umum (WMS, WFS, TMS, WMS-C). Contoh yang sangat bagus adalah openstreetmap.org - (peta jalan global yang dikumpulkan oleh komunitas). OSM dapat ditambahkan ke openlayers sebagai lapisan TMS. Lihatlah contoh ini untuk instruksi.


Hai! Sepertinya "saya" jawaban pertama Anda di sini! Selamat datang! Dan terima kasih atas jawaban Anda :-)
Pascal MARTIN

9

Beberapa klien mungkin menolak, atau memiliki keberatan, tentang penggunaan Google Maps. Mereka mungkin memiliki masalah valid bahwa Google dapat memperkenalkan iklan atau mengubah API tanpa pemberitahuan. Namun Google Maps memiliki manfaat untuk berintegrasi dengan layanan Google lainnya (penanda tempat, menambahkan foto, layanan geocoding). Sebagai webnya, Anda selalu dapat menggabungkan berbagai layanan pemetaan dan API.


1
+1. Saya punya beberapa klien seperti itu. Dan saya tidak mengatakan mereka salah. Terakhir kali saya melihat, persyaratan lisensi Google Maps memang memungkinkan Google untuk memperkenalkan iklan ke peta kapan pun mereka mau.
MarkJ

2
Juga dengan menggunakan GoogleMaps, Anda memberi Google lisensi abadi di seluruh dunia, tidak dapat dibatalkan, bebas royalti untuk mereproduksi, mengadaptasi, dan memodifikasi konten Anda.
MarkJ

9

Saya setuju dengan semua jawaban, tetapi ada satu hal yang sangat penting yang tidak ada yang menyebutkan. OpenLayers dan Google Maps memiliki target berbeda.

OpenLayer adalah kerangka kerja yang sangat baik untuk menampilkan geodata, tetapi Google Maps adalah kumpulan layanan yang mencakup kerangka kerja untuk menampilkan geodata di antara layanan lainnya.

Jadi, Google Maps memaparkan banyak layanan dan fitur yang tidak dimiliki OpenLayes. Beberapa contoh fitur dan layanan Google Maps adalah pelokalan kawasan, deteksi sensor (untuk perangkat dengan GPS) dan pelokalan pengguna, geocoding dan reverse geocoding, street view, dll.


6

Saya telah menggunakan kedua API. Saya membuat perangkat lunak untuk perusahaan dan perangkat lunak ini membutuhkan pemetaan tetapi tidak semua klien memiliki lisensi GoogleMaps, jadi saya perlu mendukung kedua jenis peta.

Saya telah membuat API umum untuk mengabstraksi perbedaan di antara mereka dan biarkan saya memberi tahu Anda, beberapa hal lebih mudah dilakukan dalam satu daripada yang lain. Seperti membatasi batas di mana Anda dapat menggeser peta, itu jauh lebih mudah dilakukan di OpenLayers, tetapi heatmap lebih mudah digunakan di GoogleMaps (secara resmi didukung oleh google, tidak seperti plugin OpenLayers yang tersedia).

  1. OpenLayers mendukung peta offline. Beberapa pengguna saya berada di intranet pribadi tanpa koneksi internet.

  2. GoogleMaps memiliki dua plugin yang mutlak harus dimiliki, MarkCluster dan Spiderfier yang memungkinkan memvisualisasikan sejumlah besar marker.

  3. GoogleMaps InfoWindows lebih mudah digunakan dan memiliki kegunaan yang lebih baik daripada OpenLayers.Popups. Ini adalah jendela kecil yang bisa dibuka ketika Anda mengklik penanda. Googlemaps InfoWindows juga jauh lebih cantik secara default, Anda harus melakukan beberapa sihir CSS dengan Popup.

  4. GoogleMaps memiliki streetview yang terkadang berguna.

  5. GoogleMaps memiliki lebih banyak fitur yang mungkin Anda butuhkan. Meskipun banyak fitur hadir di OpenLayers juga, tetapi tidak didukung secara resmi.

Biasanya pada akhirnya Anda harus menggunakan OpenLayers karena berkurangnya sakit kepala yang mungkin Anda dapatkan dari lisensi dan penggunaan bandwidth dari googlemaps. Keduanya menangani pemetaan dasar (yaitu, menampilkan penanda di atas peta) dengan sangat baik. Kecuali Anda dapat menemukan fitur spesifik yang Anda butuhkan dari salah satu yang tidak ada di sisi lain, Anda harus menggunakan OpenLayers. Lihat ini untuk informasi lebih lanjut tentang penagihan googlemaps dan kapan Anda dapat menggunakannya secara gratis.

GoogleMaps juga memiliki tipe geolokasi dasar sebagai 'LatLng' dan Openlayers menggunakan 'LonLat' yang membuat saya gila karena saya terus mengira urutan parameter dalam panggilan fungsi.


3

Selain mereka yang menyebutkan masalah kecepatan, saya ingin menambahkan bahwa renderer VML IE bisa menjadi sangat lambat dengan lapisan vektor dengan banyak fitur. Satu pengguna menyebutkan sekitar 200. Itu tentang apa yang bisa saya tambahkan sebelum IE melambat hingga titik beku. Jika Anda menambahkan fitur yang merupakan label teks, Anda dapat menambahkan setengahnya lebih sedikit, mungkin karena secara internal setiap label teks terdiri dari dua elemen VML.

Di Google Anda dapat membuat GOverlay khusus yang isinya "div", yang dibuat tanpa masalah di IE.


3

Beberapa hal yang akan saya tambahkan, dari dua perspektif: penggunaan klien dan data yang melimpah.

Penggunaan klien:

  • Apa yang Anda klien gunakan saat ini? Perubahan bisa sulit.
  • Berapa banyak fungsionalitas yang benar-benar Anda butuhkan? OpenLayers memiliki cukup banyak, tetapi jika Anda tidak menggunakannya ...

Penyajian data:

  • Apakah Anda menyajikan data KML ? Jika demikian, OpenLayers dan Google Maps akan berfungsi dengannya, dan Anda mungkin harus memutuskan berdasarkan penggunaan klien.

  • Apakah Anda melayani jenis layanan data lainnya? (WMS, WFS, CSV, dll.) Jika demikian, maka OpenLayers sangat mungkin memiliki contoh dan dukungan untuk itu.


2

OL memiliki basis penggemar yang besar dan mungkin merupakan geothing opensource yang paling banyak digunakan di dunia.

Anda tidak melihat bahwa ada banyak utas dan pos tentang hal itu di dunia maya ini karena orang-orang di sini cenderung membahas jenis teknologi lainnya, seperti JSF dan Mobile (non geo), bukan karena OL seperti struts.

Namun Ol memiliki beberapa kelemahan, terutama karena levelnya sangat rendah sehingga Anda harus menulis banyak kode untuk melakukan operasi umum. Itu dapat bekerja dengan cara yang baik juga, karena sebagai pengembang a: Anda memiliki semua kode dimuka dan b: tweaker dan penyesuaian sangat mudah.

Ada geotool gratis yang lebih canggih, tetapi yang mereka lakukan hanyalah memanggil openlayers dan abstrak beberapa tugas yang lebih membosankan.

Jadi gunakan dengan percaya diri. Itu matang, kuat dan tidak akan mati di masa mendatang. Namun jika Anda ingin mempercepat proses pengembangan Anda, Anda harus mencoba alat lain yang terpasang di atasnya.

semoga harimu menyenangkan


Hai, dapatkah Anda menjabarkan "geotool gratis yang lebih canggih" yang ada di atas OpenLayers? GeoExt disebutkan di atas, tapi saya belum melihat yang lainnya. Terima kasih.
Brian B

@BrianB hai brian, tepatnya saya sedang memikirkan geoext ketika saya menulis "geotools gratis yang lebih canggih". Perpustakaan itu menyatukan EXTJS dengan openlayers.
demonz demonz
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.