Answers:
尽管其他人都建议了不错的在线教程,但让我告诉您有关这本书的知识,这本书为我奠定了OpenLayers急需的坚实基础。
该书是:Erik Hazzard的《 OpenLayers 2.10初学者指南》。它可以从Packt Publishers获得。
我强烈推荐这本书,因为它涉及图书馆的所有主要部分。它从基础开始,逐步帮助您发展到API的复杂部分。
除了上述出色的答案外,让我补充一下自己的经验。一年半以前,我决定在硕士项目中使用OpenLayers(OL)并着手学习。从1980年代初期开始,我就一直从事编程和数字地图制作工作,这是我作为考古学家的一部分,并且成为ArcGIS用户已有15年了。我很高兴为我的项目选择OL,但是学习它并不总是一条顺利的路。有些事情并不明显,只能通过反复试验来了解。所以,我对初学者有一些建议。
当我在Safari Books Online上以每月10美元/美元的价格注册5档书架帐户时,我学习OL的旅程真正开始了。我想在购买前先阅读书籍,很少有商店可以参观与GIS相关的计算机书籍。OL 2上目前有三本书。DiLorenzo和Allegri于2013年4月出版的一本名为《 Instant OpenLayers Starter》的58页新书是一个不错的快速入门,但前两本书及其代码示例(可从出版商的网站上获得)网站,以及每本书的免费示例章节)都是不错的资源:
由于偶尔对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上检查平台状态。
看一下“ 无边界OpenLayers”研讨会。它涵盖了很多材料。研讨会使用的是GeoServer而不是MapServer,但是您只需将示例的URL更改为MapServer WMS服务即可。
值得一提的是,OpenGeo的此页面对我也很有用。它们从基础开始,并具有删除弹出窗口的GetFeatureInfo事件的良好示例。