OpenLayers için eğitim? [kapalı]


12

Birçok raster katmanını gösteren bir web haritası oluşturmam gerekiyor. Mapserver kullanıyorum ve Openlayers kullanmak istiyorum, ancak bu konuda iyi bir öğretici bulamıyorum. Birkaç iyi soru ( 1 ve 2 ) iyi bir belge olduğunu söyleyerek görüyorum . Son zamanlarda işler değişti mi?

Temel bilgilerden, kodun iyi açıklamaları ve sonuçların örnekleri / örnekleri ile oldukça karmaşık şeylere bir öğretici öğretim bulmak istiyorum. Şimdilik .map dosyamla yalnızca en basit web haritasını yapmayı başardım , ancak özelleştirmem gerekiyor (efsaneler, grup katmanları ekleyin, daha fazla kontrol ekleyin, gömme vb.).

Yanıtlar:


7

Diğerleri iyi çevrimiçi öğreticiler önermekle birlikte, bana OpenLayers'da çok ihtiyaç duyulan güçlü bir temel sağlayan kitaptan bahsedeyim.

Kitap: Erik Hazzard'ın OpenLayers 2.10 Başlangıç ​​Kılavuzu. Packt Publishers'tan edinilebilir.

Kitabın tüm önemli bölümleriyle uğraştığı için kitabı şiddetle tavsiye ediyorum. Temel bilgilerden başlar ve yavaşça API'nın karmaşık kısımlarına doğru büyümenize yardımcı olur.


2
Burada 14.44 £ mükemmel bir E-Kitap olarak kullanılabilir .
Mark Cupitt

Fiyat, eriştiğiniz ülkeye bağlıdır. Bana yaklaşık 3 $ bir fiyat gösteriyor;
Devdatta Tengshe

Vay be, sanırım Filipinler'de cezalandırılıyoruz. benim için satın almak gerekir :-)
Mark Cupitt

Tavsiye için teşekkürler, kitabı bir arkadaşımdan aldım, bir bakalım ...
nadya

Ülkenizi gizlemek ve en düşük fiyata satın almak için PirateBrowser gibi bir şey kullanamaz mısınız?
Radarın Altında

13

Yukarıdaki mükemmel cevaplara ek olarak, kendi deneyimimi eklememe izin verin. Bir buçuk yıl önce Master'ımın projesinde OpenLayers'ı (OL) kullanmaya karar verdim ve öğrenmek için yola çıktım. 1980'lerin başından beri arkeolog olarak yaptığım çalışmaların bir parçası olarak programlama ve dijital harita yapımı yapıyorum ve 15 yıldır ArcGIS kullanıcısıyım. Projem için OL'yi seçtiğim için mutluyum, ama bunu öğrenmek her zaman sorunsuz bir yol değildi. Bazı şeyler belli değildi ve sadece deneme yanılma yoluyla öğrenildi. Yeni başlayanlar için bazı tavsiyem var.

OL Books öğrenmem, Safari Books Online'da 5 dolarlık bir kitaplık hesabına 10 $ / ay USD karşılığında kaydolduğumda gerçekten başlamıştı. Kitapları satın almadan önce incelemek istedim ve ziyaret edilebilecek birkaç mağaza GIS ile ilgili bilgisayar kitaplarını taşıyor. Şu anda OL 2'de üç kitap var. Di Lorenzo ve Allegri'nin Instant OpenLayers Starter adlı yeni bir 58 sayfalık kitap iyi bir hızlı başlangıç, ancak ilk iki kitap ve bunların kod örnekleri (yayıncının web sitesinden edinilebilir) her kitabın ücretsiz bir örnek bölümü ile birlikte) iyi kaynaklar vardı:

  • OpenLayers 2.10: Erik Hazzard'ın Başlangıç ​​Kılavuzu (Mart 2011)
  • OpenLayers Yemek Kitabı Antonio Santiago Perez (Ağustos 2012)

Css ve tarayıcı uyumluluğu üzerindeki sık sık hayal kırıklıkları nedeniyle, bir JavaScript çerçevesi de öğrendim. Dojo'yu seçiyorum çünkü Perez'in kitabında kullandığı şey buydu. Modern Dojo (Dojo 1.7 +), Asenkron Modül Tanımı (AMD) formatını kullanan önceki sürümlerden önemli ölçüde farklı bir yaklaşımdır. Her şeyi yapmanın yolu değişti. Bu mükemmel kitabın, Ağustos 2012'de yayınlanmasından 9 ay önce kullanılmayan Dojo'nun 1.7 öncesi bir sürümünü kullandığını anlamadım. Esri, Haziran 2012'de modernleşene kadar JavaScript ArcGIS API'sında 1.7 öncesi Dojo'yu kullanmaya devam etti ve bu, birçok ArcGIS Javascript geliştiricisi için acı verici bir geçişti.

Dojo'nun ne kadar zayıf desteklendiğini anlamak için, 2010 yılında Dojo 1.3 hakkında yazılmış bir kitap dışında, kitapların çoğu 2007 ve 2008'de yazılmıştır. Modern Dojo için yayınlanmış bir kitap yoktur - çevrimiçi kaynaklardan, neredeyse tüm kendi web sitesinde. Temel olarak, Perez'in kitabındaki örneklerle çalışmak için Dojo bitlerini görmezden gelmek ve örnekleri düz JavaScript'e veya seçtiğiniz çerçeveye taşımak için JavaScript hakkında yeterince bilgi sahibi olmanız gerekir.

Geçmişe baktığımda keşke ExtJS çerçevesi ve GeoExt ile geçmiş olsaydım. Projeniz açık kaynaksa ExtJS ücretsizdir ve birçok şirket desteklenen bir sürüm için mutlu bir şekilde ödeme yaptığı için kapsamlı web sitesi belgelerine ve eğiticilerine zaman harcayabilirler.

En iyi örnekleri ayrı örneklerle çalışarak / hackleyerek öğreniyorum. OpenLayers'daki geliştiriciler, öğrenme için işaret ettikleri birincil belgelerle aynı felsefeye sahiptir. Ancak, web sitelerinde ve başka yerlerde bazı OL örneklerinde yeni başlayanları tökezletebilecek sorunlar vardır. (Aşağıya bakınız.)

Doküman olarak örneklere güvenmek, kullanıcının bir web haritası geliştirmek için iyi bir iş akışı hissine sahip olmadığı anlamına da gelir. Bu, eksik hissettiren haritaların yapılmasına yol açabilir - örneğin, haritalar kullanıcı arayüzünde css özelleştirmelerinden yoksun olabilir ve "görünüm ve his" verebilir. OL css'yi özelleştirmelerle geçersiz kılmak yeni başlayanlar için göz korkutucu geliyor, ancak Firebug geçersiz kılmanız gereken öğe adlarını bulmanıza yardımcı olabilir. Kabul edilen bir iş akışı hissi eksikliği, kullanıcılar ayakkabı çekeceği istedikleri gibi kodlarına girdiği için Frankencode'un oluşturulmasına da yol açabilir.

Bu beni OL site belgelerinin eksik olduğunu hissettiğim son maddeye, OL haritaları için "en iyi uygulamalar" hissine götürüyor. Kodumu modüler ve sağlam hale getirmek için düzenlemenin daha iyi bir yolu var mı? JavaScript kapakları ve OL nesneleri içeren tuzaklar nelerdir? Tarzlarımı nerede beyan etmeliyim? Ve bunun gibi.

Wiki'deki çeşitli eski dosyalar dışında, yeni başlayanların resmi OL örnekleri ve API belgelerinden öğrenirken bilmesi gereken iki genel sorun vardır. Birincisi, OL web sitesinde OL geliştirme örnekleri sayfasında herhangi bir organizasyon yoktur. Örneklerin o dizinindeki (örnek-list.xml) xml dosyasındaki feed'i (13 Şubat 2014 itibariyle bunların 207'si) sunmak ve satırları dosya adına göre alfabetik olarak bir ızgaraya sıralamak. Daha gelişmiş örnekler temel olanlarla karıştırılmıştır. Örnekleri anahtar kelimeye göre arayabilirsiniz, ancak örneklerin çoğunda anahtar kelime yoktur ve arama özelliği, yalnızca anahtar kelimeleri değil, aramada içerik ve sayfa başlığı içerir. Sonuçlar, önce eşleşen en fazla sayıda arama terimi ve ardından kelime sıklığı ile döndürülür. Arama terimlerinden yalnızca birinin sonuçlarda görünmesi için eşleşmesi gerekir. OL Wiki'deki UserRecipes sayfası, kategoriye göre düzenlenmiş yaklaşık 90 örneği listeler ve bu kategorizasyon bir yardımcıdır. Bunlardan 66'sı, örnekler sayfasındaki örneklere canlı bağlantılar ve geri kalanı kaldırılan örneklere kötü bağlantılardır.

İkincisi, temel olarak API belgesinin ilk bakışta aynı gibi görünen iki sürümü vardır. Resmi API, / apidocs adlı bir dizinde ve kanayan kenardadır, ancak geçici geliştirici kitaplığı / docs adlı bir dizindedir. Aksi takdirde URL'ler aynıdır. (Ayrıca gövde sürümleri de vardır.) Diğer sürümü görmek için sayfanın adresini düzenlemeniz yeterlidir. Wiki, geliştirici kitaplığına, özellikler, işlevler vb. Herhangi bir zamanda kitaplıktan kaldırılabileceğinden güvenilmemesi gerektiğini belirtir. OpenLayers 3 gerçeğe yakın olduğundan (beta sürümünde mevcuttur ve üzerinde bir kitap var), gelecekte OL 2'de çok fazla değişmeyeceğinden şüpheleniyorum. Şimdi odak OL 3.

Genel olarak, OL API sayfalarının aşırı derecede iskeletsel olduğunu, genellikle açıklamaların veya açıklayıcı örneklerin bulunmadığını düşünüyorum, özellikle daha eksiksiz API belgeleri olan kütüphanelere kullanılan bir kişi için. Sunulma şekli, miras aldığı nesnenin net bir resmini elde edemezsiniz.

Genel olarak web'deki OL örneklerinden çoğu, geliştirilmiş sürümlerle değiştirildiği için kullanımdan kaldırılmış nesneler veya sözdizimi kullanır. Örneğin, Layer.Vector şimdi Layer.Marker sürüm 3'te kullanımdan kaldırıldığı için işaretleyicileri çizmenin tercih edilen yoludur. Çıkışta olan nesneleri kullanmadığınızdan emin olmak için deprecated.js dosyasını inceleyin. Veya en azından kodunuzu OL 3'e yükseltirseniz, bunu değiştirmeniz gerekecektir.

Yukarıdaki Julien-Samuel Lacroix tarafından bağlanan Sınırsız OpenLayers atölyesine ek olarak, IBM, eksiksiz bir GIS web uygulaması oluşturmak için OpenLayers, MapServer, Google Gears ve jQuery kullanan harika bir öğreticiye sahiptir: OpenLayers ile birlikte veri getirin : Web haritalarında birden fazla farklı kaynaktan gelen verileri kullanma

Ayrıca, katman değiştiriciyi şekillendirmek için bu yararlı gönderiye göz atın

Bazı OL keman örnekleri için Google OpenLayers ve jsFiddle kelimeleri. Techslides sitesinden elde edilen sonuç, bunlardan birkaçını listeleyen bir sayfadır.

Son olarak, çoğu örnekteki harita görüntülerinin OpenStreetMap (OSM) sunucularından geldiğine ve bunların arada sırada planlandığını veya planlanmadığını ve yerine pembe karolar alacağınızı unutmayın. Bazen kodunuzu bozduğunuzu düşüneceksiniz. Platform durumunu OpenStreetMap wiki'sinde kontrol edebilirsiniz.


2
Bu güzel ve detaylı bir cevap. Bu tür cevapların sitede bulunmaması utanç verici.
Devdatta Tengshe

Leta, tüm cevap için teşekkürler! Şimdi GeoExt (ve ExtJS) ile kavga ediyorum ve bu OL daha öğreticiler ile daha da sorunları var, onların örnekleri güzel görünüyorsun böyle :)
Nadya


4

Açık Katmanlar inanılmaz derecede esnek olan harika bir pakettir, ancak yeni başlayanlar için dokümantasyondan yoksundur, ancak bir ton ayrıntılı geliştirici dokümanına sahiptir.

İlk başladığımda yaptığım şey, tüm Örneklere bakmak, istediğim işlevselliğe sahip olanları seçmek, kodu analiz etmek ve işlevselliği adım adım inşa etmekti . Bir vuruşta çok fazla işlevsellik denemenin, kavramları ve hata ayıklama sorunlarını akılda tutmayı zorlaştırdığını buldum.

Daha sonra, ya diğer insanların sorularını araştıran ya da kendime soran belirli konularda büyük bir yardım olan GIS @ SE'yi buldum.

Bunun dışında, @Julian muhtemelen öğreticiler açısından size en iyi seçeneği verdi, oldukça iyi.


Cevabınız için teşekkürler, bu örnekleri zaten gördüm, ancak ihtiyacım olanı bulamadım. Bu yüzden kodlamak zorunda kalacağım ...
nadya

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.