OpenLayers vs Google Haritalar? [kapalı]


169

Google Haritalar'ı birkaç kez kullandım, ancak OpenLayers'ı merak ediyorum .
Herhangi bir kodlamaya başlamadan önce, aklıma gelen birkaç soru var,

  • Neden Google Haritalar yerine OpenLayers kullanayım?
    • Zaten OSS lisansı dışında
    • OpenLayers'ı kullanmamanızı kesinlikle tavsiye ettiğiniz bir durumla karşılaştınız mı?
    • Stack Overflow "OpenLayers" hakkında bir arama yaptım ; çok cevap yok. Bu çözümün fazla kullanılmadığı anlamına mı geliyor? Projenin uzun vadeli uygulanabilirliği için bir sorun olabilir mi?
  • Zaten OpenLayers kullanmış olanlar için: karşılaşabileceğim yaygın tuzaklar / problemler var mı?
    • Bununla birlikte bir JavaScript Çerçevesi kullanmaya ne dersiniz? Prototip kullandığını gördüm ve Prototip'i biliyorum, bu yüzden sorun değil. Peki MooTools gibi başka bir şey kullanmaya ne dersiniz ? (Prototip, BTW ile uyumlu değildir)
    • Hız ve performansla ilgili herhangi bir sorun var mı? Uygulamamın duyarlı olması gerekiyor ve bir haritanın görüntülenmesi için saatlerce bekleyemiyorum.
  • Birçok yerde kullanılabilecek haritalar var mı, yoksa eksik olan çok fazla var mı?
    • Yani, Fransa'dayım ve başvurumun en azından büyük şehirlerde çalışması gerekiyor ... Bu iyi olacak mı?
    • değilse, OpenLayers için katmanlar ve görselleştirmeler bulmak ve bunları entegre etmek kolay mıdır?
  • Yolları görüntülemek için herhangi bir API var mı?
    • Örneğin, yalnızca tek yönlü olan yolları göstermek için.
    • Evet ise, bunu nasıl yapabilirim? Bu yol bilgilerini içeren bir tür dosyam olması ve bunları harita üzerinde tek başıma göstermem gerekiyor mu?
  • OpenLayers için iyi bir öğretici biliyor musunuz?

Henüz denemedim, bunlar mavi soruların dışında ...


Meraktan, neden "OSS lisansı" felsefi nedenler dışında OpenLayers lehine bir nokta olabilir? Google'ın lisansının istediğinizi ücretsiz olarak yapmanıza izin verdiğini varsayarsak, kararınızı neden her iki şekilde de etkiler?
Mark

7
@ Mark Google lisansıyla ilgili sorunlar var. IANAL, ancak Google Haritalar'da veri göstermenin Google'a verilerinizi kopyalamak, değiştirmek, dönüştürmek ve yeniden dağıtmak için sınırsız bir lisans verdiğini anlıyorum. Örneğin , İngiltere Ordnance Survey GIS ürünlerinden elde edilen verileri Google Haritalar'da göstermek yasalara aykırıdır . OSS'nin bir başka avantajı, OpenLayers'ın bir kuruluşun kaprislerine tabi olmamasıdır. Her ne kadar pratikte olsa da, gelecekteki Google Haritalar'ı desteklemek için muhtemelen Google'ın iyi
niyetine

1
Bu makaleler yararlı olabilir: EveryBlock - Haritalarımız Hakkında: blog.everyblock.com/2008/feb/18/maps Bir Liste Apart - Haritalarınızın Kontrolünü Elinize Alın (her EveryBlock'tan da) alistapart.com/articles/takecontrolofyourmaps
mg1075

8
Google Haritalar tamamen ücretsiz değildir ( google.com/support/forum/p/maps/… ). Lisans, onu nasıl kullandığınıza bağlıdır.
Mo

Eğer SO hakkında bir cevap bulamazsanız, her şey coğrafyası için GIS.SE sitesini kontrol etmeye değer.
Roy

Yanıtlar:


158

Bunlar gerçekten harika sorular! Ben profesyonel bir OpenLayers geliştiricisi ve hayranıyım, bu yüzden sorularınızı bu açıdan ele alacağım.

Neden Google Haritalar yerine OpenLayers kullanayım?

  • Esneklik: Herhangi bir belirli harita sağlayıcısına veya teknolojisine bağlı değilsiniz. İstediğiniz zaman değiştirebilirsiniz ve tüm kodunuzu yeniden yazmak zorunda kalmazsınız. Google, Yahoo, Microsoft, WMS, ArcGIS Server, MapServer vb. Kutudan çıkar çıkmaz desteklenir.
  • Vektör Desteği: Noktalar, çoklu çizgiler ve çokgenler için daha iyi destek.
  • Kontrol: İhtiyacınız olabilecek yeni özellikleri ekleme olanağınız vardır. Ben şahsen OpenLayers için üç eklenti yazdım, ikisi kaynağın bir parçası ya da olacak.
  • Hata ayıklama: Kaynak kodundan geçtiğinizde hata ayıklamak çok daha kolay!

Projenin uzun vadeli uygulanabilirliği konusunda hiç endişe etmem. Bu, birinci sınıf açık kaynaklı istemci tarafı eşleme kütüphanesidir.

Karşılaşabileceğim yaygın tuzaklar / sorunlar var mı?

  • Karşılaştığım en büyük tuzak Web Mercator (Google) projeksiyonu ile çalışmak. WGS 84 gibi ortak ve gerçek bir projeksiyonda olan vektör verilerini Google, Yahoo ve Microsoft temel haritaları kullanarak bir OpenLayers haritasında görüntülemek acı verici olabilir. Örnekler senin arkadaşın.

JavaScript Çerçeve Uyumluluğu

  • Tüm işlerim için jQuery çerçevesini kullanıyorum ve yaşadığım tek sorun OpenQayers'tan sonra jQuery'e başvurmak. Bunun dışında, düzgün yelken oldu.
  • Performans harika! Tek sorun harita sunucunuzla veya haritanıza çok fazla vektör eklenmesi ile ilgili olacaktır.

Birçok yer için harita var mı?

  • Dediğim gibi, dünyanın herhangi bir yerinden hemen hemen herhangi bir kaynaktan temel haritaları kullanabilirsiniz.

Yolları görüntülemek için herhangi bir API var mı?

  • CloudMade'e bakardım! Dönüştürdük OpenStreetMap bir harita parçası hizmete proje ve özel stil izin verir. Tek yönlü sokakları (örneğinize göre) belirli bir şekilde şekillendirebileceğinizi düşünüyorum. CloudMade Geliştirici Bölgesi .

OpenLayers için iyi bir öğretici biliyor musunuz?

Ben bunun yararlı olucağını umuyorum. Ve herhangi bir sorunuz varsa Stack Overflow'dayım!


5
Selam! Bu cevap için çok teşekkürler, bu gerçekten yararlı! Kesinlikle bazı ilginç noktalar var (düşündüğüm proje için muhtemelen daha iyi vektör desteği yararlı olacaktır; ve ilginç olduğunu söylediğiniz tek şey bu değil!); Belki bir süre sonra başka sorular soracağım: OL ile henüz çalışmaya başlamamıştım (bu soru oldukça "prelimar" bir ^^ idi), ama sanırım, aldığım cevapları göz önünde bulundurarak zaman gelecek!
Pascal MARTIN

5
+1. Bu yorumu yazmamaya çalıştım, ama kendime yardım edemiyorum. WGS84 bir projeksiyon değildir. (Bu şeyleri öğrenmeye değer - acı verici bir şekilde CBS alıyorum ve harita haritalarına gerçekten yardımcı oluyor.)
MarkJ

1
WGS84 bir coğrafi koordinat sistemidir (elipsoid üzerinde enlem / boylam noktaları görüntülemek için kullanılır). Web mercator hemen hemen web-projeksiyon defacto olduğunu.
Roy

35

Bu mutlaka OpenLayers VEYA Google Maps ile ilgili bir soru değildir. Sonuçta, OpenLayers'ta harita arka planınız için Google Haritalar'ı kullanabilirsiniz. Daha spesifik cevaplar:

Neden OpenLayers?

  • OpenLayers, farklı kaynaklardan gelen haritaları birleştirebilir (Google Haritalar arka planı, WMS yer paylaşımları, KML veya GML dosyalarından vektör verileri veya WFS vb.)
  • OpenLayers'a Google Haritalar'dan daha fazla stil verebilirsiniz
  • Açık kaynak, hata ayıklama sırasında kaynak kodunu kontrol edebilirsiniz
  • Haritalarda yüksek hassasiyete ihtiyacınız varsa, daha iyi bir harita projeksiyonu elde etmek için Google Haritalar yerine uygun bir harita sunucusu arka ucuna sahip OpenLayers kullanın (Google Haritalar dünyanın mükemmel bir küre olduğunu varsayar)

tuzaklar

  • Siteler arası komut dosyası sınırlamaları nedeniyle başka bir sunucudan vektör (WFS) verilerini kullanmak istiyorsanız proxy'ye ihtiyacınız vardır

Verim

  • Esas olarak haritanın arka ucunun hızına bağlıdır
  • Birçok vektör özelliğinin görüntülenmesi (sınır tarayıcıya bağlıdır, ancak bir görünümde> 200 diyelim) zaman alır, ancak bu OpenLayers ile ilgili bir sorundan çok bir tarayıcı şeyidir

JavaScript çerçeveleri

  • Örneğin ExtJS + OpenLayers olan GeoExt'e bir göz atın

Mevcut haritalar

  • OpenLayers bir harita arka ucu ile gelmiyor. Google Haritalar, Yahoo Maps, MS Virtual Earth vb. Veya herhangi bir WMS ve WFS hizmetine erişebilirsiniz.

Güzel cevaplar; tüm bu bilgiler için teşekkürler! Henüz ayrıntıları bilmiyorum, ama kendi sunucumdan bazı verileri kullanmak zorunda kalabilirim, bu yüzden her şey iyi olmalı, özellikle birkaç arka uçları entegre etme yeteneği ile (Doğru anladıysam ^^ Test etme şansım olacak bunu birkaç gün içinde umarım ;-))
Pascal MARTIN

1
@Pascal, cevabın yararlı olduğuna sevindim. OpenLayers topluluğunun çok aktif olduğunu ve posta listelerinin oldukça yararlı olduğunu ekleyebilirim.
Nils Weinander

Geliştirici örnekleri sayfasında yer almayan herhangi bir şey varsa, büyük olasılıkla bunu google haritalarda yapamazsınız. örneğin, siteler arası komut dosyası oluşturmanın bile bir proxy tarafından kapsanması gerekmez
Glenn Plas

23

SO'daki OpenLayers kullanıcılarının varlığını çok fazla görmedim ama oradalar. Posta listeleri OpenLayers oldukça aktiftir (hattayım Kullanıcılar ve Dev ve her yerde 50-100 e-postalar çeşitli şeyler tartışırken bir gün dan görüyoruz. Siz de bu bağlantılardan listeleri arama yapabilirsiniz.).

Tüm sorularınızı cevaplayamıyorum ama ortaya koyacağım bir şey OpenLayers ve google haritalarının birbirini dışlamadığı. OpenLayers bir javascript kütüphanesidir ve bunu google maps ile etkileşim kurmak için kullanabilirsiniz. Şu örneğe göz atın: Google Maps kullanan OpenLayers . Ve işte ana OpenLayers örnekleri sayfası .


Bu cevap için teşekkürler! Bir proje ile çalışmaya başlamadan önce posta listelerinin oldukça aktif olduğunu görmek güzel
Pascal MARTIN

13

Burada tam olarak belirtilmemiş bir nokta, OpenLayers kullanmanın Google'ın harita API'ları için hizmet şartlarına getirdiği çeşitli kısıtlamalardan kaçınmasıdır:

  • Bir Google haritasını yasal olarak yalnızca sitenizin erişim için ödeme gerektiren bir bölümde veya halkın kaydolamayacağı özel bir site (ör. Şirket intraneti) için kullanamazsınız. (IANAL, ancak bkz . Hizmet Şartları, 9.1 ve SSS )

  • Google API'sını çevrimdışı uygulamalar için yasal olarak (veya pratikte) kullanamazsınız (örn. Kutucukların kendi makinenizden sunulduğu yerlerde). Yasal kısıtlamalar olmasa bile, Google bunu teknik olarak çok zorlaştırırken OpenLayers bunu kolaylaştırıyor.

  • Sakıncalı bulduğu içeriğe sahip bir harita gösteriyorsanız Google, API'ya erişimi kapatma hakkını saklı tutar. SSS'de verilen örnek , bu kısıtlamanın kapsayabileceği gri alanlar hakkında iyi bir fikir veren yasadışı uyuşturucuların bir haritasıdır.

Daha fazla ayrıntı için bu SSS'ye ve Hizmet Şartları'na bakın.

Tüm bunlar, yakın zamanda OpenLayers'ı kullanmaya başlayan uzun zamandır bir Google Haritalar geliştiricisi olarak, Google Haritalar'ın OpenLayers'tan daha iyi dokümantasyona, daha büyük bir kullanıcı topluluğuna ve daha açık ve daha kararlı bir API'ya sahip olduğunu hissediyorum. Yani bir yerde bir takas yapmak zorundasınız.


"Sitenizin erişim için ödeme gerektiren bir bölümünde veya halkın kaydolamayacağı özel bir site (ör. Kurumsal bir intranet) için yasal olarak bir Google haritası kullanamazsınız." Bu yanlış. Kullanıcıların çoğu sitenizi ve haritalarınızı ödeme yapmadan kullanabildikleri sürece Google Haritalar'ı sitenizin ücretli bir bölümünde kullanabilirsiniz. Örneğin bir emlak web sitesi. Posterler evlerini listelemek için ödeme yapmak zorundadır, ancak kullanıcıların büyük bir çoğunluğu ödemeden siteye göz atabilirler. Bu durumda, her ikisinin de Google Haritalar'a erişimi vardır.
Craig

Teşekkürler - API'yı yalnızca ödeme gerektiren bölümlerde kullanamayacağınızı kastediyorum . Yayımı güncelledim ve bu sorunu gidermek için daha fazla bağlantı ekledim.
nrabinowitz

OpenLayers, Google Haritalar API'sını dahili olarak kullanır, böylece aynı lisansa tabi olursunuz. osgeo-org.1560.x6.nabble.com/…
Alfredo Osorio

@AlfredoOsorio - evet, Google katmanlarını kullanıyorsunuz. Çok sayıda başka karo kaynağı var.
nrabinowitz

12

Bu gerçekten haritayı ne için kullanmak istediğinize bağlı. Bir haritayı basitçe çizmek için Google Haritalar iyi olacak. Google Haritalar için harita katmanları da oldukça ayrıntılı. Öte yandan OpenLayers çok daha fazla işlevsellik sunar ve çok genişletilebilir.

OpenLayers'ın başlamanız için birçok örneği var.

Haritalara gelince, OpenLayers yalnızca bir API'dir, bu yüzden katmanları eşleyecek şekilde sağlamanız gerekir. Google Haritalar API'sı, google tarafından sağlanan harita katmanlarıyla sınırlı olacaktır. OpenLayer ile herkese açık harita hizmetlerini (WMS, WFS, TMS, WMS-C) hemen hemen görüntüleyebilirsiniz. Çok iyi bir örnek openstreetmap.org - (topluluk tarafından toplanan küresel sokak haritası). OSM, açık katmanlara bir TMS katmanı olarak eklenebilir. Talimatlar için bu örneğe göz atın .


Selam! Buraya ilk cevabınız "Ben" gibi görünüyor! Hoşgeldiniz! Cevabınız için teşekkürler :-)
Pascal MARTIN

9

Bazı müşteriler Google Haritalar'ı kullanmayı reddedebilir veya güçlü rezervasyonları olabilir. Google'ın reklam vermeden veya API'yı bildirimde bulunmaksızın değiştirebileceğinden geçerli endişeleri olabilir. Ancak Google Haritalar'ın diğer Google hizmetleriyle (yer işaretleri, fotoğraf ekleme, coğrafi kodlama hizmetleri) entegre olma avantajı vardır. Web olarak her zaman birçok farklı harita hizmetini ve API'yi birleştirebilirsiniz.


1
+1. Bunun gibi bazı müşterilerim var. Ve yanlış olduklarını söylemiyorum. Son kez baktığımda, Google Haritalar lisans koşulları gerçekten Google'ın istedikleri zaman haritalara reklam sunmasına izin veriyor.
MarkJ

2
Ayrıca GoogleMaps'i kullanarak Google'a, içeriğinizi yeniden üretmek, uyarlamak ve değiştirmek için kalıcı, değiştirilemez, telifsiz, dünya çapında bir lisans verirsiniz.
MarkJ

9

Tüm cevaplara katılıyorum, ama kimsenin bahsetmediği çok önemli bir nokta var. OpenLayers ve Google Haritalar'ın farklı hedefleri vardır.

OpenLayer, coğrafi verileri görüntülemek için mükemmel bir çerçevedir, ancak Google Haritalar, diğer hizmetler arasında coğrafi verileri görüntülemek için bir çerçeve içeren bir hizmet havuzudur.

Dolayısıyla, Google Haritalar, OpenLayes'in sahip olmadığı birçok hizmeti ve özelliği ortaya çıkarır. Google Haritalar özelliklerine ve hizmetlerine örnek olarak bölge yerelleştirme, sensör algılama (GPS'li cihaz için) ve kullanıcı yerelleştirme, coğrafi kodlama ve ters coğrafi kodlama, sokak görünümü vb. Verilebilir.


6

Her iki API'yı da kullandım. Şirketler için bir yazılım hazırlıyorum ve bu yazılım eşleme gerektiriyor, ancak tüm istemcilerin bir GoogleMaps lisansı yok, bu nedenle her iki haritayı da desteklemem gerekiyor.

Aralarındaki farkları soyutlamak için ortak bir API yaptım ve size söyleyeyim, bazı şeyleri diğerinden yapmak daha kolay. Haritayı kaydırabileceğiniz yerlerin sınırlarını sınırlamak gibi, OpenLayers'ta yapmak çok daha kolaydır, ancak ısı haritalarının GoogleMaps'te kullanımı daha kolaydır (mevcut OpenLayers eklentilerinin aksine resmi olarak google tarafından desteklenmektedir).

  1. OpenLayers çevrimdışı haritaları destekler. Bazı kullanıcılarım internet bağlantısı olmayan özel intranetlerde.

  2. GoogleMaps kesinlikle çok sayıda eklentiye sahip olmalıdır, MarkCluster ve Spiderfier , çok sayıda işaretleyiciyi görselleştirmeyi mümkün kılar.

  3. GoogleMaps InfoWindows'un kullanımı daha kolaydır ve OpenLayers.Popup'lardan daha iyi kullanılabilirliğe sahiptir. Bunlar, bir işaretçiyi tıklattığınızda açılabilen küçük pencerelerdir. Google Haritalar InfoWindows da varsayılan olarak çok daha güzel, Popup'larla bazı CSS sihirbazları yapmanız gerekiyor.

  4. GoogleMaps'in bazen yararlı olan sokak görünümü vardır.

  5. GoogleMaps'te ihtiyacınız olabilecek daha fazla özellik vardır. OpenLayers'da da birçok özellik mevcut olmasına rağmen, resmi olarak desteklenmemektedir.

Genellikle sonunda, lisanslamadan ve googlemaps'ten bant kullanımı nedeniyle alabileceğiniz baş ağrısının azalması nedeniyle OpenLayers ile gitmelisiniz. Her ikisi de temel haritalamayı (yani bir haritanın üstünde işaretler görüntüleme) çok iyi idare eder. İhtiyaç duyduğunuz belirli bir özelliği diğerinde bulunmayan bir özellik bulamazsanız, OpenLayers için gitmelisiniz. Bkz bu googlemaps fatura ve ne zaman ücretsiz olarak kullanabilirsiniz hakkında daha fazla bilgi için.

Ayrıca GoogleMaps 'LatLng' olarak temel coğrafi konum tipine sahiptir ve Openlayers 'LonLat' kullanmaktadır.


3

Hız sorunlarından bahsedenlere ek olarak, IE'nin VML oluşturucusunun birçok özelliğe sahip bir vektör katmanıyla gerçekten yavaşlayabileceğini eklemek isterim. Bir kullanıcı 200'den bahsetti. Bu, IE'nin donma noktasına kadar önemli ölçüde yavaşlamadan önce ekleyebileceğim şeyle ilgili. Metin etiketi olan özellikler eklerseniz, büyük olasılıkla dahili olarak her metin etiketi iki VML öğesinden oluştuğu için daha az ekleyebilirsiniz.

Google'da, içeriği IE'de sorunsuz bir şekilde görüntülenen "div" olan özel bir GOverlay oluşturabilirsiniz.


3

İki açıdan ekleyeceğim birkaç şey: istemci kullanımı ve veri dağıtımı.

İstemci kullanımı:

  • Müşterileriniz şu anda kullanmaya alışkın mısınız? Değişim zor olabilir.
  • Gerçekten ne kadar işlevselliğe ihtiyacınız var? OpenLayers biraz var, ama kullanmıyorsanız ...

Veri sunumu:

  • Eğer hizmet vermekteyiz KML verilerini? Öyleyse, hem OpenLayers hem de Google Maps onunla çalışacak ve muhtemelen müşteri kullanımına göre karar vermeniz gerekecek.

  • Başka türde veri hizmetleri mi sunuyorsunuz? (WMS, WFS, CSV, vb.) Öyleyse, OpenLayers'ın büyük olasılıkla örnekleri ve desteği vardır.


2

OL büyük bir hayran kitlesine sahiptir ve belki de dünyada en çok kullanılan Açık Kaynak kodlu jeometredir.

Bu siber ortamda bu konuda pek çok konu ve gönderi görmüyorsunuz çünkü buradaki insanlar OL, struts gibi olduğu için değil, JSF ve Mobile (geo olmayan) gibi diğer teknolojileri tartışıyorlar.

Ancak Ol'un bazı dezavantajları vardır, temel olarak o kadar düşük seviyededir ki, ortak operasyonlar yapmak için çok sayıda kod yazmanız gerekir. Bu da iyi bir şekilde çalışabilir, çünkü bir geliştirici olarak a: tüm kodları önceden ayarladınız ve b: tweaking ve özelleştirme çok kolaydır.

Daha sofistike ücretsiz geotooller var, ancak yaptıkları tek şey openlayers çağırmak ve daha sıkıcı işlerden bazılarını soyutlamak.

Bu yüzden güvenle kullanın. Olgun, sağlam ve öngörülebilir gelecekte ölmeyecek. Ancak, geliştirme sürecinizi hızlandırmak istiyorsanız, üstüne monte edilen diğer araçları denemelisiniz.

iyi günler


Merhaba, OpenLayers'ın üstünde yer alan "daha sofistike ücretsiz geotools" hakkında ayrıntılar verebilir misiniz? GeoExt yukarıda bahsedildi, ancak henüz belirtilmiş başka görmedim. Teşekkürler.
Brian B

@BrianB merhaba brian, tam olarak "daha sofistike ücretsiz geotools" yazdığımda geoext hakkında düşünüyordum. Bu kütüphane bir EXTJS'i açık katmanlarla birleştirir.
demonz demonz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.