DevFest归来

上次Google的北京DevFest活动,来自美国的工程师Pamela Fox介绍了地图API中的一些新的功能,这些功能在目前的谷歌中文地图大多得到了很好的支持,因此,在这里对这些API做一些介绍,让很多因为时间和名额的关系没能参加这次活动的朋友一起来分享这顿技术大餐。

一、强大的地址解析器 —— 反向地址解析(Reverse Geocoding)

熟悉谷歌地图API的朋友可能已经知道在谷歌地图API里有一个叫做GClientGeocoder 的类,这个类提供了geocode功能,能够把用户指定的地址转换成为地理坐标,也就是我们常说的地址解析。但是,一直以来,在谷歌中文地图上我们只能用这个API来解析省市县级别的地址,如果你指定的地址包括乡镇街道等等更精细的信息,API就无能为力了。幸运的是,就在前不久,谷歌中文地图的geocode功能已经放开,能够支持到乡镇街道等等更为精细的地址解析了,比如,我们现在可以用下面的这行代码就可以直接取得"五道口"的地理坐标了:
new GClientGeocoder().getLatLng("五道口", callback);
如果你还没有用过地址解析器,可以来这里试试
而Pamela Fox这次给我们带来的好消息是,GClientGeocoder不仅能够把地址解析成地理坐标,而且还能够把地理坐标还原成地址,也就是反向地址解析。你或许要问,反向解析,这有什么用?好吧,我也不知道你会把这个功能用在哪里,试试下面的这个反向解析的例子,你肯定会比我更清楚你准备要怎么来用。拿起你的鼠标猛击地图吧!
更多更详细的GClientGeocoder的用法,到地图API的文档看看吧,有问题的话也可以到我们的地图API论坛里提问。

二、小巧灵活的搜索工具 —— 本地搜索栏(Local Search)

曾经有朋友抱怨说谷歌地图左下角的Logo有时候似乎有点碍事,这里且不讨论Logo在这里的"合法"地位,但就这个Logo来说,如果有方法把它变成一个灵活的搜索框,你,难道还会抱怨吗?看看下面地图的右下角
这就是本地搜索栏,而且,在你使用谷歌地图API创建一个GMap2对象的时候,只需要这样一行代码,你就可以拥有这样一个搜索栏了:
GMap2.enableGoogleBar();
当然,API还提供了很多参数用来对这个搜索栏进行定制,比如,改变搜索结果的显示样式和位置、改变搜索栏的初始状态和搜索框里的提示信息、改变搜索的数据源等等,另外,你也可以使用AJAX Search API的相关内容来定制自己的本地搜索框,更详细的说明请参考开发文档

三、不用再为用户定位费神了 —— 地点探测(Location Detection)

如果你想让你的用户在登录你的地图应用时,不需要不停的缩放和拖拽地图就能够快速定位他在地图的位置,仅仅使用现有的API,实现这样的用户体验估计让你贡献了不少脑细胞。现在,一切都简单了,在你的应用里导入AJAX API的加载器,也就是google.loader,使用这个加载器提供的ClientLocation类,就可以根据用户加载AJAX类库时的IP,自动解析用户所在的地理位置,取得包括地理坐标、城市、国家、国家代码、与IP关联的地区名等在内的所有信息。一段典型的示例代码如下:
var loc = google.loader.ClientLocation;
if(loc && loc.latitude && loc.longitude)
map.setCenter(new GLatLng(loc.latitude, loc.longitude), DEFAULT_LEVEL);
} else {
map.setCenter(DEFAULT_CENTER, DEFAULT_LEVEL);
}

注意,AJAX API是一个独立的类库,就是说,需要使用一个新的<script>标签来导入一个新的AJAX类库。这是一个简单小巧的类库,支持谷歌搜索、谷歌地图等等API类库的动态加载,可惜的是目前还不支持中文地图API的动态加载。但是,这并不妨碍我们在中文地图API环境中使用ClientLocation来进行地点探测。

四、可以不加载类库就使用谷歌地图?—— 静态地图(Static Map)

是的,我们常用的地图是需要浏览器支持JavaScript、需要加载一系列的JavaScript类库和图片、支持用户点击拖拽的动态地图。如果你的用户环境不支持JavaScript,或者,你只是想使用地图来做一些简单的示意,只有在用户需要的时候才激活动态地图,那么,静态地图就可以派上用场了。
其实,所谓静态地图就是对动态地图的一个截图,所以,使用静态地图也非常简单,只需要一个<img>标签就可以搞定。当然,这个截图不需要你去进行实际的截图操作,你要做的就是给这个<img>标签的src属性指定一个固定的URL,在这个URL中设定你所需要的地图边界、缩放层次等等就可以了,比如:


如果需要的话,你同样可以在这个静态地图上添加各种标记和折线,这里也有一个静态地图的向导 ,试试看?
静态地图详细的文档在这里

五、浏览器就是一切 —— 扩展地图API
谷歌地图API提供了丰富的扩展接口,这些扩展接口中有些是直接在地图API类库中定义的,有些则已经成为独立的类库,Pamela主要为我们介绍了这几种扩展,这里作一下简单的介绍:
1、自定义地图
这是在谷歌地图API中定义的一系列扩展接口,使用这些接口,你可以定义你自己地图,比如,把地图上的图片换成你自己的全景图片,或者,使用你自己的卫星图片或历史图片替换地图上的某个图块(Tile)等等,但这些往往需要复杂的数学计算和服务器端支持,所以实现起来就不是那么easy了。当然,地图API中也有一些相对简单的扩展接口,比如,定义你自己的控件(GControl)叠加层(GOverlay) 等等。
这里有一些自定义地图的例子:上海实景纽约老地图
2、Flash API
这是一个独立于JavaScript API的类库,允许你在Flash环境下嵌入和使用谷歌地图,并具有JavaScript类库类似的功能。这是一个新近发布的类库,所以现在还没有中文文档,在API的使用过程中有什么问题,可以看看它的开发文档(英文) 或者用户论坛(英文)
这是一个使用Flash API的例子 ,还有一个使用键盘控制的Flash驾车游戏
3、Earth API
谷歌地球(GoogleEarth)的强悍是人所共知的,把这样一个强悍的3D模型嵌入到浏览器中,并且使用JavaScript来与这个3D模型沟通,像在谷歌地图上一样在这个嵌入式的谷歌地球上添加标记和折线,这就有点太神奇了吧。
Earth API就是这样可以控制这个嵌入式谷歌地球并可以在这个3D模型上展示数据的JavaScript独立类库,但是,使用它的前提是你已经安装了谷歌地区的浏览器插件,如果你还没有安装请到这里下载 ,目前这个插件只支持Windows环境下的FireFox和IE6/7。更多信息请参考它的中文文档英文论坛
先睹为快,到这里来体验一个例子吧,或者,看看我们在北京奥运期间做的奥运场馆3D模型

在你使用谷歌地图API 的过程中,如果遇到问题和困难,请访问谷歌地图API社区论坛在那里有很多专家和热心的好手们会帮你解决问题:


Chen fei

固定链接  |  引用此贴的链接  |



2008谷歌中国DevFest技术交流讲座会议总结及资料分享

谷歌中国十月份在北京和上海两个城市举行的DevFest技术交流讲座活动顺利结束了。来自两个城市的一百多位网络开发技术专家和IT人士,分别参加了在两个城市位于谷歌中国办公楼的全天技术分享和交流的盛会。他们聆听了来自谷歌在美国Mt. View总部和来自谷歌中国的工程师们所作的各种最新型的网络技术的介绍,包括OpenSocial, 地图(Maps) API, 和App Engine的技术介绍,以及如何利用这些新技术进行应用编程的示范演示。参会的听众们还就自己所关心的各种问题和开发中所碰到的疑问和难点,向讲师们进行了互动式提问和对话,在现场直接得到谷歌技术专家们针对性的回答和建议。在北京的讲座上,来自51.com的开发领导经理,还向听众们介绍了51.com如何按照OpenSocial的公开标准开发他们的社会关系网站的经验,展示了他们功应用OpenSocial公开标准的案例。

这次讲座活动的举办方,谷歌中国的Developer Relations部门,对参会者作了反馈调查。绝大多数参会者希望将这样的活动保持在一天之内的长短、喜欢将演讲和编程实践结合在一起的讲座活动。很多人都希望参加更多的类似活动。根据大家的反馈,我们在未来将举办更多的类似讲座和技术分享活动。请大家关注未来的类似活动的通知。 

为了便于所有参会者对讲座的内容进行复习和进一步实践,也为了让所有网络开发者进行了解,这里我们谨向大家分享这次DevFest讲座的幻灯片 - 大家可以任意下载这些参考资料进行自学: 
两个城市的讲座照片在这里与大家分享:

谷歌中国Developer Relations向所有参会者们表示感谢! 

Bill Luan (栾跃)
Technical Program Manager
Developer Relations
谷歌中国


固定链接  |  引用此贴的链接  |



介绍OpenSocial Dev App - 它让开发OpenSocial 应用更方便了!

作者:Arne Roomann-Kurrik, 谷歌开发工程师 
翻译:Guibin (孔贵宾)

今天我非常荣幸能够发布OpenSocial Dev App:一种能让原型和JavaScript代码调试在容器环境中运行的工具。其目的是让那些不熟悉OpenSocial JavaScript APIs的新手们学习起来更轻松,同时给经验丰富的开发者们提供了一种更快捷的方式,无需编写全部的XML规范,或下载一个文件到服务器上,或安装一系列简单的测试应用程序就可直接测试新容器和APIs方法。

作为一名OpenSocial开发者,我已经编写了很多小配件以测试我们的新容器和API函数。之前,这种测试工作一般包括填写配件的XML规范,编写JavaScript代码,下载文件到服务器上,把配件安装到容器中以及下载应用程序。我发现我经常忘记在规范中填写一些必要的东西,使输入混乱,或者把newFetchPersonRequest混成 newFetchPeopleRequest(不下一百回了),这些事情就经常让编写测试代码的过程看起来很令人沮丧。

利用Dev App,用户可以编写一组测试函数,并在编辑窗口直接运行。以后还想用到代码吗?这些样品都可以保存下载。

下面我们列举了Dev App的一些特性:
  • Code tab--在现今容器上测试JavaScript代码。你可以保存或下载代码样品,这对编写小测试文件或样品来说意义很大。点击下载样品的名字,在新的浏览器窗口中打开它--该窗口的URL可被标记,也可发送给朋友或者在调试报告中使用。
  • Sample tab--一个描述一般OpenSocial活动的样品列表(我们希望持续增加更多的样品),在你的容器上你可以直接下载这些样品到code tab以测试它们的功能。一旦下载好了,试着改变样品以添加新的功能特性。
  • Data Viewer tab--当需要人名和持续数据时,检查容器返回的数据。是不是想看看容器能否以ID支持提取人名方式?是不是想看到容器实现的领域以及应用程序应用的领域。利用这一工具就可快速探讨数据,而且不用编写任何一行代码。
  • Export XML tab--现在编写XML规范就像填写一张简单的表格。如果希望通过不同的代码样品使用相同的数据,输入将可被下载并保存。
  • News tab--从众多OpenSocial开发人员的博客中收集最新作品,并在某一块地方作出介绍。掌握众多OpenSocial容器的最新动态,而且无需关注很多不同的博客。
  • Help tab--提供帮助的功能,OpenSocial Dev App功能是一个在线的帮助浏览器,一本全面的"入门"指南。

更多信息,链接以及在线帮助指南的副本,都在 the OpenSocial Dev App homepage首页。如果想在容器上测试OpenSocial Dev App,从下列网站列表中就可以安装:

如果你喜爱的容器不在上述列表内,请不用担心--使用下列2个XML链接之一就可使用OpenSocial Dev App。

固定链接  |  引用此贴的链接  |



谷歌中国DevFest技术讲座会议将在北京、上海举行








谷歌中国这个月将在北京和上海两个城市举行DevFest技术交流讲座:1017日在上海,1024日在北京。我们诚挚邀请中国网络开发的技术专家们,前来参加这个技术分享和交流的盛会。这个技术教育讲座会议将采用谷歌Hackathon讲座的形式,让听众们除了听讲座、还通过亲自动手编程实践的方法,来学习和掌握最新的网络应用开发技术。

  • 日期:上海,1017日; 北京, 1024日;
  • 时间:上午9点到下午6点(提供午餐);
  • 内容:
    • OpenSocial 介绍、编程示范和应用演示;
    • Map API 介绍、编程示范和应用演示;
    • Goggle App Engine 介绍、编程示范和应用演示;
    • 综合应用演示 - 如何将这也技术整合起来的编程演示;
    • 参会者自由编程实践,谷歌工程师们现场辅导及回答技术问题;
    • 全体参会者向谷歌工程师们提问的互动对话;

这次DevFest技术教育讲座会议将主要讲解和分享有关建立网上社区的公开标准OpenSocial及其开发应用,用来开发提供地图服务的谷歌地图API,以及Google App Engine应用技术。谷歌在美国Mt. View总部的工程师们,加上谷歌中国的工程师们,将一起为你进行讲解和演示,并指导听众们进行编程的动手实践,将学到的技术立即进行运用。 另外,还会有让听众向来自谷歌总部和谷歌中国的讲师们就所关心的问题进行提问的问答活动。


我们邀请你根据自己就近的城市来参加两个其中的活动之一。你只需带上你的笔记本电脑、你的好奇心和创新力、你的问题和困惑,来参加我们这个一整天的网络编程盛会!


如果你有兴趣来参加,请你在以下网页注册,并标明你想参加哪个城市的讲座:https://spreadsheets.google.com/viewform?key=ps3tFc_QUYHhmmqegaPDwZA 我们会根据注册者的通讯信息进一步通知所有参会者具体的会议细节和地点。


由于我们只有有限的空位,有可能我们无法满足所有要来参加的人。如果要是因为场地局限我们无法满足你这一次的参会要求,请允许我们在这里事先表示抱歉和致意。只要你注了册,我们在将来举办类似的未来网络技术分享和学习的活动时一定告知你并提供参加机会。

谢谢!


Bill Luan (栾跃)

Technical Program Manager

Developer Relations

谷歌中国


固定链接  |  引用此贴的链接  |



喜欢"我的地图"吗?在你自己的API应用上使用它的线条和形状编辑器吧!


在我们发布谷歌地图上的那个"我的地图"编辑器的时候,开发者的反应是"太酷了,但我怎么才能在我自己的网站上也用上这样的工具呢?"作为最初就是因为有地图API以及有一个相当好的开发者社区而被吸引到谷歌来的人我就想一定要让开发者们能够在他们自己的网站上也能用上和"我的地图"中一样的编辑工具。

现在,我很高兴的宣布,这个支持可编辑的折线和多边形这样的图像使用界面功能现在地图API的一部分了。

也就是说,比如,你有一个想让用户能够编辑的多边形(GPolygon )。只需调用GPolygon.enableEditing()用户创建的多边形的每个边在用户光标悬浮在这条边上的时候都会出现一个可拖拽的小方块,用户可以拖动某个方块点来编辑对应的边。要是你又不想让它可编辑,调用GPolygon.disableEditing()就可以了。

另外我们也列出了GPolygon GPolyline 的一些附加事件,这样你很容易就可以模仿"我的地图"使用功能了(在API应用或者是小地图中),具体的做法就是,在mouseover的时候调用enableEditing方法,在mouseout的时候调用disableEditing方法。要确认用户什么时候做了编辑的话,侦听lineupdated件就行了。如果你想让用户能够从无到有画一条完整的新的GPolyline,像下面这样调用enableDrawing


var polyline = new GPolyline([]);

map.addOverlay(polyline);

polyline.enableDrawing();


在地图上的每次点击都会增加一个新的来连接折线,直到用户双击或者单击折线开始的那个顶点。你也可以调用enableDrawing来让用户能够追加一个点到一条已经存在的折线的任何一端。每个人都喜欢漂亮一点的颜色,所以我们也提供几个方法让你能够改变折线或者多边形的样式:setStrokeStylesetFillStyle尽情玩吧,呵呵,有什么问题可以到我们的论坛上说说。

这里有一个在单独的窗口打开例子

固定链接  |  引用此贴的链接  |



当我们混在一起

几个小时之内搞出一坨页面来收集全球网友发布的带有 #080808 标签的内容?乍一听可能觉得不可思议,但在 Web 2.0 时代纵横交错的各种 API 的帮助下,做起来其实是非常的简单呢!

8月7日那天下午我一边在搞 Google 的“北京夏季运动会”页面 (也是一个mash-up哦),一边就在 twitter 看到了 flypigwebleonbabechloe 几位朋友做的 #080808 这个 idea。“好棒的主意!”我想,“可以做一个更 fancy 的首页把网友们的参与给 show 出来。”于是我在 Gmail 里面给这几位天才的创始人发了一个草图,原始文献如下所示:



8月8日的凌晨我开始动手搞这个。最先动手写的是 HTML + JavaScript,它们决定了页面的结构和内容。Geeks 同学们可能会对我们如何使用这些 API 的细节有兴趣:
这一步工作完成了以后就有一个裸奔的站点出现在我们眼前啦——功能齐备,就是丑得不堪入目。找飞猪老师讨来设计素材,在 Fireworks 里面做了一些简单的页面设计,输出图片,写 CSS……把它打扮得漂漂亮亮, 就赶在黎明前出街鸟。

这就是我们的成果:http://tag080808.appspot.com

虽然这个 application 放在了 Google App Engine 上,但其实到目前为止我们都没有用到任何服务器端技术。整个页面就是一个静态的 HTML 页面,所有动态的数据都是用 JavaScript 读入的。所以电视机前的观众朋友们,如果您想 copy 这个站点的话,把这个网页直接保存下来然后上传到自己的服务器就可以啦。我们也欢迎你动手做一些改进,时间所限,这个 mash-up 确实还有很大的改进空间。像 Google 就还有许多容易上手又非常强大的 API 可以利用,比如说 AJAX Search APIMaps APIAJAX Languages API 还有 Chart API 等等……详情请参见 Google 的 API 目录页

Mash-up 真是很好玩也很有用的东西,把散落在网络四处的信息放在一起重新组合,这本身就是一件很神奇的事情。 Web 2.0 不仅仅意味着半透明渐变 logo,永不消逝的 beta 标签和标签云,像这样的开放性也是 Web 2.0 基因的一部分。

也希望国内的厂商也能多一点开放性,这样子下次我们或许可以显示更多来自国内网站的内容。

Update: 这篇帖子最早是在奥运会期间发在 tag080808.com 上的。奥运会结束以后,我们又利用 App Engine 的技术搭建了一个总结页面,可以显示每个参与个人的所有消息,还有根据这些消息分析出来的关键词云图。如果你也参与了这个活动,可以去 me.tag080808.com 查看一下。比如,这就是我的页面啦。

王俊煜, Google 用户体验部

固定链接  |  引用此贴的链接  |



谷歌中国开发者视频节目专辑增加了新的播放列表

谷歌中国开发者视频节目专辑上星期正式发布后,谷歌中国开发者关系部为了方便大家对各种开发者技术的学习,在已有的谷歌中国开发者日等专门的中文视频内容基础之上,现在又加入了一个新的集中谷歌开发者产品和技术辅导录像的播放列表:谷歌开发者产品和技术的辅导录像汇集(英文版)播放列表的直接链接为:

这是一个专为中国的开发者们所建的谷歌开发者产品和技术的辅导演示录像列表,集中了各种谷歌开发者产品和技术的讲解,便于大家的搜索和参照。虽然录像视频是英文,很多视频都加上了中文字幕,便于收看者的理解。我们为大家提供这些视频资源,是为了满足大家尽快学到各种先进的网络应用新型技术的需要。

今后我们会继续采取这种双管齐下的技术分享方针:在尽量为中国的开发者们提供中文版本的原创内容的同时,也向大家及时提供谷歌在世界范围进行技术分享的英文讲座和演示的内容,让中国的网络应用开发者们能够方便地了解和学习到谷歌领先业界的各种网络开发和应用技术,让你的网络应用开发的效益能够提高得更快。

我们欢迎的你的经常来访! 谢谢!

谷歌中国开发者关系部

固定链接  |  引用此贴的链接  |



Copyright © 2008 Google Inc. All rights reserved.
隐私政策 - 服务条款