第一部分 初识Google Maps第1章 Google Maps和Rails 1
1.1 KML:第一个地图 2
1.2 Warfaring:第二个地图程序 3
1.2.1 添加第一个停靠点 4
1.2.2 添加飞行路线 4
1.2.3 添加目的地停靠点 5
1.2.4 添加行车路线 6
1.3 已经掌握Rails吗 6
1.4 接下来的内容 7
第2章 开始行动 8
2.1 关于JavaScript、帮助器和插件 8
2.2 创建自己的Rails应用程序 9
2.3 第一个地图 9
2.3.1 密钥 9
2.3.2 讨论范例地图 11
2.3.3 指定一个新的位置 12
2.3.4 分离代码和内容 13
2.3.5 内存清理工作 15
2.4 基本的用户交互 16
2.4.1 使用Map控件 16
2.4.2 创建标记 16
2.4.3 检测标记单击操作 18
2.4.4 打开信息窗口 18
2.5 标记点的列表 19
2.5.1 使用数组和对象 19
2.5.2 迭代 21
2.6 小结 23
第3章 与用户和服务器交互 24
3.1 添加交互能力 24
3.2 寻宝游戏 24
3.3 回顾应用程序结构 26
3.4 完善自己的应用程序 26
3.4.1 创建新的控制器 26
3.4.2 创建标记模型和迁移 26
3.4.3 创建数据库,使用Rails连接数据库,并运行迁移 27
3.4.4 创建地图视图 28
3.5 创建地图和标记点 28
3.6 监听用户事件 29
3.7 使用信息窗口获取更多信息 31
3.7.1 在地图上创建信息窗口 31
3.7.2 在信息窗口中嵌入一个表单 32
3.7.3 避免模糊状态 35
3.7.4 控制信息窗口的尺寸 37
3.8 实现Ajax 38
3.8.1 Google的GXmlHttp与Prototype的Ajax.Request 38
3.8.2 使用Google的Ajax对象 39
3.8.3 使用GXmlHttp实现数据保存 39
3.8.4 解析JSON结构 43
3.9 从服务器检索标记 44
3.10 添加一些新风格 46
3.11 Ajax和Prototype 48
3.12 小结 50
第4章 地理解码地址 51
4.1 准备地址数据 51
4.1.1 创建模型 51
4.1.2 添加full_address方法 52
4.1.3 填充数据库表 52
4.2 使用地理解码Web服务 54
4.2.1 使用地理解码服务的需求 54
4.2.2 Google Maps API地理解码器 55
4.2.3 Google JavaScript地理解码器 61
4.2.4 Yahoo Geocoding API 62
4.2.5 Geocoder.us 66
4.2.6 Geocoder.ca 68
4.2.7 Google覆盖范围之外的其他地理解码服务 69
4.3 持久保存查找结果 70
4.4 创建一个商店位置地图 71
4.5 小结 73
第二部分 跨越基础 75
第5章 使用第三方数据 75
5.1 使用可下载的文本文件 75
5.1.1 下载这个数据库 76
5.1.2 操作文件 78
5.1.3 关联和导入数据 79
5.1.4 使用新的数据库模式 82
5.2 界面抓取 89
5.2.1 我们的脚本工具:scrAPI 89
5.2.2 界面抓取需要考虑的问题 93
5.3 小结 94
第6章 改进用户界面 95
6.1 CSS:改进自己的风格 95
6.1.1 最大化地图 97
6.1.2 添加悬浮的工具条 98
6.1.3 创建可收缩的侧面面板 101
6.2 脚本实现的样式 103
6.2.1 改变文档体的类属性 103
6.2.2 使用JavaScript代码来调整尺寸 104
6.2.3 填充侧面面板 107
6.2.4 获取侧面面板的反馈 108
6.3 过滤数据点 109
6.4 RJS和可拖放的工具条 111
6.4.1 RJS模板 111
6.4.2 可拖放的工具条 111
6.5 小结 112
第7章 优化和调整大型数据集 113
7.1 限制 113
7.2 服务器和客户端通信的串行化 114
7.3 优化服务器端处理过程 115
7.3.1 服务器端边界方法 116
7.3.2 服务器端公用点方法 119
7.3.3 服务器端集群 123
7.3.4 定制的细节覆盖层方法 127
7.3.5 定制图格方法 134
7.4 优化客户端的用户体验 141
7.4.1 客户端边界方法 141
7.4.2 客户端最靠近公用点方法 143
7.4.3 客户端集群 145
7.4.4 更多的客户端优化方法 149
7.5 小结 150
第8章 Google Maps API预计改进之处 151
8.1 运动方向 151
8.2 集成的Google服务 152
8.3 KML数据 153
8.4 更多的数据层 154
8.5 满足企业级需求 155
8.6 界面改进 155
8.7 小结 156
第三部分 高级地图功能和方法第9章 高级提示和技巧 157
9.1 调试地图 157
9.2 使用API与地图进行交互 158
9.2.1 帮助你找到自己的位置 158
9.2.2 使用GEvent强迫触发事件 159
9.2.3 创建自己的事件 160
9.3 使用GOverlay创建地图对象 161
9.3.1 选择覆盖层的窗格 161
9.3.2 创建一个快速的工具提示覆盖层 162
9.4 创建定制的控件 165
9.4.1 创建控件对象 166
9.4.2 创建容器 167
9.4.3 容器定位 167
9.4.4 使用这个控件 167
9.5 向信息窗口添加标签 168
9.5.1 创建有标签的信息窗口 168
9.5.2 收集信息窗口信息和修改标签 169
9.6 创建定制的信息窗口 170
9.6.1 创建覆盖层对象和容器 174
9.6.2 绘制LittleInfoWindow 175
9.7 实现自己的地图类型、图格和投影 178
9.7.1 GMapType:粘合在一起 179
9.7.2 GProjection:定位事物所处位置 179
9.7.3 GTileLayer:查看图像 184
9.7.4 Blue Marble地图:把所有事物集成起来 186
9.8 小结 194
第10章 线段、长度和区域 196
10.1 从平面开始 196
10.1.1 长度和角度 196
10.1.2 面积 197
10.2 考虑球体环境 200
10.2.1 大圆圈 200
10.2.2 大圆圈长度 200
10.2.3 球体表面的面积 202
10.3 使用折线 205
10.3.1 创建折线演示程序 205
10.3.2 扩展折线演示程序 210
10.4 关于UTM坐标 211
10.5 与日期变更线冲突 212
10.6 小结 213
第11章 高级地理解码话题 214
11.1 数据来自于什么地方 214
11.1.1 来自于政府数据源的数据 214
11.1.2 原始的GIS数据源 218
11.2 基于邮政编码的地理解码服务 218
11.3 使用TIGER/Line数据 222
11.3.1 理解和定义数据 222
11.3.2 解析和导入数据 225
11.3.3 创建地理解码服务 231
11.4 小结 235
附录 237
附录A 搜索需要的数据 237
附录B Google Maps API 244