亲爱的读者:
Google Maps API开启了创建地理应用程序的便捷之门。同时,Ruby on Rails也是一个高效的开发环境,而且易于使用。本书讨论两种工具的有效集成。
在本书中,你将学习使用Ruby on Rails创建Google Maps应用程序所需要了解的所有内容。本书首先讲解如何实现“Hello World”地图应用程序,讨论如何在地图上添加标记以及提供交互能力;接着,你将掌握如何使用地理解码 (geocoding)服务,把街道地址转换为地图上的标记点;最后,你还会学习如何使用CSS和JavaScript来创建用户界面。
本书还会讨论很多有关地理应用程序的高级话题,比如有关地图投射的运算公式和方法。本书后面几个章节深入介绍我们喜欢的内容。本书第7章使用RMagick来覆盖地图上任意内容。动态服务器端图像生成是一非常强大的技术,如果能够集成到地图应用程序中就更加完美了。我们可以使用这种技术,在地图上显示超过115000个的标记点,这个数量远远超出传统方式能够支持的程度。
本书第11章介绍另外一个有趣的主题,即你可以使用美国Census Bureau的数据,从头开始创建自己的地理解码器(geocoder)。这个范例充分展示脚本语言Ruby的优势,因为它需要大量处理一般的文本文件。
Ruby on Rails和Google Maps是个绝妙的开发组合。希望你愉悦地使用本书所介绍的技术,就像我们编写本书的过程一样。
Andre Lewis、Michael Purvis、Jeffrey Sambells和Cameron Turner
无
亲爱的读者: Google Maps API开启了创建地理应用程序的便捷之门。同时,Ruby on Rails也是一个高效的开发环境,而且易于使用。本书讨论两种工具的有效集成。 在本书中,你将学习使用Ruby on Rails创建Google Maps应用程序所需要了解的所有内容。本书首先讲解如何实现“Hello World”地图应用程序,讨论如何在地图上添加标记以及提供交互能力;接着,你将掌握如何使用地理解码 (geocoding)服务,把街道地址转换为地图上的标记点;最后,你还会学习如何使用CSS和JavaScript来创建用户界面。 本书还会讨论很多有关地理应用程序的高级话题,比如有关地图投射的运算公式和方法。本书后面几个章节深入介绍我们喜欢的内容。本书第7章使用RMagick来覆盖地图上任意内容。动态服务器端图像生成是一非常强大的技术,如果能够集成到地图应用程序中就更加完美了。我们可以使用这种技术,在地图上显示超过115000个的标记点,这个数量远远超出传统方式能够支持的程度。 本书第11章介绍另外一个有趣的主题,即你可以使用美国Census Bureau的数据,从头开始创建自己的地理解码器(geocoder)。这个范例充分展示脚本语言Ruby的优势,因为它需要大量处理一般的文本文件。 Ruby on Rails和Google Maps是个绝妙的开发组合。希望你愉悦地使用本书所介绍的技术,就像我们编写本书的过程一样。 Andre Lewis、Michael Purvis、Jeffrey Sambells和Cameron Turner
Andre Lewis Michael Purvis;Jeffrey Sambells Cameron Turner:暂无简介
龚波 吴耀宇:暂无简介
Google Maps的诞生标志着互联网地图服务的兴起。Google Maps API是Google推出的编程API,可以让全世界对Google Maps有兴趣的程序员自行开发基于Google Maps的服务,建立自己的地图网站,从而降低开发地理应用程序的门槛,把Google的地图信息和自己的数据整合起来以建立自己的地理信息服务。
2006年4月3日,Google推出了Google Maps API 2,第2版能对第1版提供99%的兼容性。目前,Google Maps API的开发工作在始终不断进行着。随着API功能的逐渐增强,全世界也涌现出越来越多“快捷和实用”的地理应用程序。
本书以实例方式介绍如何在Ruby on Rails平台上使用Google Maps API。为什么要采用Rails来使用Google Maps API呢?因为Rails是简单的、强大的,同时也是免费的。使用Rails框架可以大幅度提升基于数据库的Web应用程序的开发效率。把Rails和Google Maps API集成起来,可以开发绝妙的Web应用程序。借助于Rails,也可以很容易生成和使用XML。借助于XML,Google Maps可以更广泛地得以应用。Rails也提供对JSON(JavaScript Object Notation)的内置支持。
本书是国内引入的第一本有关Google Maps API开发的专业图书。本书作者Andre Lewis、Michael Purvis、Jeffrey Sambells和Cameron Turner具有丰富的阅历,对新技术孜孜以求。作者们积极参与Google Maps API成长进程,具有丰富的应用开发经验。
本书的可读性和实践性都很强,并不是简单陈列API方法或者事件,而是向读者详细介绍:如何基于现有免费资源,提供全面的代码范例,演示如何逐步建立地理应用程序。
本书内容包括初识Google Maps、跨越基础和高级地图功能和方法3部分,还提供Google Maps API参考。本书不仅能够满足Google Maps API初学者的入门需求,也给高级开发者提供了很多重要的建议。阅读本书之后,读者会对Google Maps API有深入了解,具备开发基于Google Maps API应用程序的能力。
原书的句子比较晦涩,涉及的领域知识比较广泛。译者们竭力保证译文的正确、通顺和优雅,但错误之处在所难免,恳请广大读者多加指正。
本书主要由龚波、吴耀宇和徐雅丽翻译,龚波负责最后的统稿。其他参与本书翻译和质量保证的人员还有张平、田丽韫、李志、任志宏、韩存兵、田振中、赵军锁、陈蓓、姜南。感谢大家的辛勤工作和专业精神。同时,还要感谢出版社编辑们的辛勤工作!
译者
2008年3月
目录
译者序
关于作者第一部分初识Google Maps
第1章Google Maps和Rails
11KML:第一个地图
12Warfaring:第二个地图程序
121添加第一个停靠点
122添加飞行路线
123添加目的地停靠点
124添加行车路线
13已经掌握Rails吗
14接下来的内容
第2章开始行动
21关于JavaScript、帮助器和插件
22创建自己的Rails应用程序
23第一个地图
231密钥
232讨论范例地图
233指定一个新的位置
234分离代码和内容
235内存清理工作
24基本的用户交互
241使用Map控件
242创建标记
243检测标记单击操作
244打开信息窗口
25标记点的列表
251使用数组和对象
252迭代
26小结
第3章与用户和服务器交互
31添加交互能力
32寻宝游戏
33回顾应用程序结构
34完善自己的应用程序
341创建新的控制器
342创建标记模型和迁移
343创建数据库,使用Rails连接数
据库,并运行迁移
344创建地图视图
35创建地图和标记点
36监听用户事件
37使用信息窗口获取更多信息
371在地图上创建信息窗口
372在信息窗口中嵌入一个表单
373避免模糊状态
374控制信息窗口的尺寸
38实现Ajax
381Google的GXmlHttp 与Prototype
的AjaxRequest
382使用Google的Ajax对象
383使用GXmlHttp实现数据保存
384解析JSON结构
39从服务器检索标记
310添加一些新风格
311Ajax和Prototype
312小结
第4章地理解码地址
41准备地址数据
411创建模型
412添加fulladdress方法
413填充数据库表
42使用地理解码Web服务
421使用地理解码服务的需求
422Google Maps API地理解码器
423Google JavaScript地理解码器
424Yahoo Geocoding API
425Geocoderus
426Geocoderca
427Google覆盖范围之外的其他
地理解码服务
43持久保存查找结果
44创建一个商店位置地图
45小结
第二部分跨越基础
第5章使用第三方数据
51使用可下载的文本文件
511下载这个数据库
512操作文件
513关联和导入数据
514使用新的数据库模式
52界面抓取
521我们的脚本工具:scrAPI
522界面抓取需要考虑的问题
53小结
第6章改进用户界面
61CSS:改进自己的风格
611最大化地图
612添加悬浮的工具条
613创建可收缩的侧面面板
62脚本实现的样式
621改变文档体的类属性
622使用JavaScript代码来调整尺寸
623填充侧面面板
624获取侧面面板的反馈
63过滤数据点
64RJS和可拖放的工具条
641RJS模板
642可拖放的工具条
65小结
第7章优化和调整大型数据集
71限制
72服务器和客户端通信的串行化
73优化服务器端处理过程
731服务器端边界方法
732服务器端公用点方法
733服务器端集群
734定制的细节覆盖层方法
735定制图格方法
74优化客户端的用户体验
741客户端边界方法
742客户端最靠近公用点方法
743客户端集群
744更多的客户端优化方法
75小结
第8章Google Maps API预计
改进之处
81运动方向
82集成的Google服务
83KML数据
84更多的数据层
85满足企业级需求
86界面改进
87小结
第三部分高级地图功能和方法
第9章高级提示和技巧
91调试地图
92使用API与地图进行交互
921帮助你找到自己的位置
922使用GEvent强迫触发事件
923创建自己的事件
93使用GOverlay创建地图对象
931选择覆盖层的窗格
932创建一个快速的工具提示
覆盖层
94创建定制的控件
941创建控件对象
942创建容器
943容器定位
944使用这个控件
95向信息窗口添加标签
951创建有标签的信息窗口
952收集信息窗口信息和修改标签
96创建定制的信息窗口
961创建覆盖层对象和容器
962绘制LittleInfoWindow
97实现自己的地图类型、图格和投影
971GMapType:粘合在一起
972GProjection:定位事物
所处位置
973GTileLayer:查看图像
974Blue Marble地图:把所有事物
集成起来
98小结
第10章线段、长度和区域
101从平面开始
1011长度和角度
1012面积
102考虑球体环境
1021大圆圈
1022大圆圈长度
1023球体表面的面积
103使用折线
1031创建折线演示程序
1032扩展折线演示程序
104关于UTM坐标
105与日期变更线冲突
106小结
第11章高级地理解码话题
111数据来自于什么地方
1111来自于政府数据源的数据
1112原始的GIS数据源
112基于邮政编码的地理解码服务
113使用TIGER/Line数据
1131理解和定义数据
1132解析和导入数据
1133创建地理解码服务
114小结
附录
附录A搜索需要的数据
附录BGoogle Maps API