OpenLayers教程?[关闭]


12

我需要创建一个显示许多栅格图层的网络地图。我正在使用mapserver,并且想使用Openlayers,但是找不到关于它的任何好教程。我看到几个老问题(第1和第2个)说,没有好的文档。事情最近有变化吗?

我想找到一个从基础到相当复杂的东西的教程,对代码和结果的图片/示例都有很好的解释。目前,我仅使用.map文件制作了最简单的网络地图,但我需要对其进行自定义(添加图例,组图层,添加更多控件,嵌入等)。

Answers:


7

尽管其他人都建议了不错的在线教程,但让我告诉您有关这本书的知识,这本书为我奠定了OpenLayers急需的坚实基础。

该书是:Erik Hazzard的《 OpenLayers 2.10初学者指南》。它可以从Packt Publishers获得。

我强烈推荐这本书,因为它涉及图书馆的所有主要部分。它从基础开始,逐步帮助您发展到API的复杂部分。


2
它可以从这里作为电子书购买,价格为14.44英镑,看起来不错。
Mark Cupitt

价格取决于您访问国家/地区。它向我显示的价格约为3美元;
Devdatta Tengshe

哇,我想在菲律宾我们正在受到惩罚。应该让您为我买:-)
马克·库皮特

谢谢您的建议,刚从朋友那里得到这本书,让我们看看...
nadya

您不能使用PirateBrowser之类的东西来隐藏您的国家并以最低价格购买吗?
低于雷达2014年

13

除了上述出色的答案外,让我补充一下自己的经验。一年半以前,我决定在硕士项目中使用OpenLayers(OL)并着手学习。从1980年代初期开始,我就一直从事编程和数字地图制作工作,这是我作为考古学家的一部分,并且成为ArcGIS用户已有15年了。我很高兴为我的项目选择OL,但是学习它并不总是一条顺利的路。有些事情并不明显,只能通过反复试验来了解。所以,我对初学者有一些建议。

当我在Safari Books Online上以每月10美元/美元的价格注册5档书架帐户时,我学习OL的旅程真正开始了。我想在购买前先阅读书籍,很少有商店可以参观与GIS相关的计算机书籍。OL 2上目前有三本书。DiLorenzo和Allegri于2013年4月出版的一本名为《 Instant OpenLayers Starter》的58页新书是一个不错的快速入门,但前两本书及其代码示例(可从出版商的网站上获得)网站,以及每本书的免费示例章节)都是不错的资源:

  • Erik Hazzard撰写的《 OpenLayers 2.10:初学者指南》(2011年3月)
  • Antonio Santiago Perez撰写的OpenLayers食谱(2012年8月)

由于偶尔对CSS和浏览器兼容性感到沮丧,我最终也学习了JavaScript框架。我选择Dojo,因为这是Perez在他的书中所使用的。现代Dojo(Dojo 1.7 +)与以前的版本相比,使用异步模块定义(AMD)格式是一种完全不同的方法。改变一切的方式。我不明白这本出色的书使用了Dojo的1.7版之前的版本,该版本在2012年8月该书出版之前的9个月就已过时。Esri继续在JavaScript ArcGIS API中使用1.7版的Dojo,直到2012年6月进行了更新。 ,对于许多ArcGIS Javascript开发人员而言,这是一个痛苦的选择。

要了解Dojo的支持程度如何,除了2010年写的关于Dojo 1.3的书外,大多数书都是2007年和2008年写的。现代Dojo没有出版的书-您必须从在线资源中学习,几乎所有在他们的网站上。基本上,要使用Perez的书中的示例,您需要对JavaScript有足够的了解,以忽略Dojo位并将示例移入纯JavaScript或您选择的框架中。

回想起来,我希望我不再使用ExtJS框架和GeoExt。如果您的项目是开源的,则ExtJS是免费的,并且由于许多公司乐于为受支持的版本付费,因此他们有能力花时间在全面的网站文档和教程上。

通过处理/破解示例,我学得最好。OpenLayers的开发人员具有与他们要学习的主要文档一样的基本原理,即研究示例。但是,他们网站上和其他地方的一些OL示例存在一些问题,可能使初学者感到迷惑。(见下文。)

依赖于示例作为文档也意味着用户对开发Web地图没有良好的工作流程感。这可能会导致制作的地图感觉不完整-例如,它们可能缺少对地图用户界面和“外观”的css自定义。使用自定义项覆盖OL css对于初学者来说让人望而生畏,但是Firebug可以帮助您找到需要覆盖的元素名称。缺乏对工作流程的接受感也会导致Frankencode的创建,因为用户在发现自己想要的代码时便会在其代码中添加功能。

这使我想到了我认为OL站点文档缺少的最后一项,即OL映射的“最佳实践”感。有没有更好的方法来组织代码以使其模块化和健壮?JavaScript闭包和OL对象有哪些陷阱?我应该在哪里声明我的风格?等等。

除了Wiki中各种过时的文件之外,初学者从官方OL示例和API文档学习时还应注意两个一般问题。首先,OL网站上的OL开发示例页面没有组织。它只是在示例的目录(example-list.xml)(截至2014年2月13日,其中207个)中显示xml文件中的供稿,然后按文件名的字母顺序将这些行排序到网格中。更高级的示例与基本示例混合在一起。您可以按关键字搜索示例,但是许多示例缺少关键字,并且搜索功能在搜索中包括内容和页面标题,而不仅仅是关键字。返回结果时,首先匹配的搜索词数最多,然后是词频。只有一个搜索词需要匹配才能显示在结果中。OL Wiki上的UserRecipes页面列出了按类别组织的约90个示例,此分类对您有所帮助。其中有66个是到达示例页面上示例的实时链接,其余的是指向已删除示例的错误链接。

其次,基本上有两个版本的API文档乍一看似乎是相同的。正式的API位于/ apidocs目录中,但最新消息是,易失的开发人员库位于/ docs目录中。否则,URL相同。(还有主干版本。)只需编辑页面地址即可查看其他版本。Wiki指出,不应依赖开发人员库,因为可能会随时从库中删除属性,函数等。由于OpenLayers 3接近现实(可以在beta中使用,并且现在有一本书在其中),我怀疑OL 2将来不会有太大变化。现在的重点是OL 3。

总的来说,我发现OL API页面过于骨骼化,通常缺少解释或说明性示例,特别是对于那些习惯使用具有更完整API文档的图书馆的人而言。呈现方式无法清晰地了解其继承的对象。

通常,在Web上的OL示例中,许多对象或语法已被弃用,因为它们已被改进的版本取代。例如,Layer.Vector现在是绘制标记的首选方法,因为在版本3中不推荐使用Layer.Marker。检查文件deprecated.js,以确保您没有使用正在输出的对象。或者,至少要知道,如果您将代码升级到OL 3,则需要对此进行更改。

除了上面的Julien-Samuel Lacroix所链接的Boundless OpenLayers研讨会之外,IBM还有一个很酷的教程(尽管已有3年历史),它使用OpenLayers,MapServer,Google Gears和jQuery构建了一个完整的GIS Web应用程序:将数据与OpenLayers结合在一起:在网络地图中使用来自多个不同来源的数据

另外,请查看有关设置图层切换器样式的有用信息

Google用OpenLayers和jsFiddle这两个词来获取OL小提琴的一些示例。来自techslides网站的结果是一个页面,列出了很多这样的页面。

最后,请注意,大多数示例中的地图图像均来自OpenStreetMap(OSM)服务器,并且这些图像不时掉落,无论是经过计划的还是未经计划的,您都将获得粉红色的瓷砖。有时您会认为自己搞砸了代码。您可以在OpenStreetMap Wiki上检查平台状态。


2
这是一个很好的详细答案。很可惜我们在网站上没有这么多答案。
Devdatta Tengshe 2014年

Leta,谢谢您的完整回答!现在,我正在使用GeoExt(和ExtJS),并且与OL相比,教程存在更多的问题,它们的示例看起来像这样:)
nadya 2014年


4

Open Layers是一个很棒的软件包,非常灵活,但是它确实缺少适合初学者的文档,但是有大量详细的开发人员文档。

我刚开始时所做的就是看所有示例,选择具有所需功能的示例,分析代码并逐步构建功能,并在进行过程中进行测试。我发现一次尝试过多的功能会使人们更难于了解概念和调试问题。

然后我发现GIS @ SE在研究其他人的问题或提出我自己的问题上对特定问题有很大帮助。

除此之外,@ Julian可能在教程方面为您提供了最佳选择,它们非常好。


感谢您的回答,我已经看过这些示例,但是找不到我需要的。所以我将不得不编码...
nadya

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.