最近接了个不赚钱的活。需要嵌入Google的地图到网页中。算是有点收获。
关于maps.google.com/maps参数的说明很少。我们在links里生成的链接大概如下所示。但是具体参数的涵义没有说明,对于想要定制显示方式来说,还是有点难度。
http://maps.google.com/maps?
f=d
&source=s_d
&saddr=%E5%A4%A7%E8%BF%9E%E5%B8%82%E9%A9%AC%E6%A0%8F%E5%AD%90
&daddr=38.91975132975439,121.4334236830473+to:%E4%B8%AD%E5%9B%BD%E8%BE%BD%E5%AE%81%E7%9C%81%E5%A4%A7%E8%BF%9E%E6%97%85%E9%A1%BA%E5%8F%A3%E5%8C%BA%E5%A4%A7%E7%9F%B3%E6%B4%9E%E6%9D%91
&hl=en
&geocode=FfTbUQIdeOU-BykxnaYr6mCPNTHVguEj3oZWBw%3BFUfeUQIdT-08ByknRgvPumiPNTGKyUnse2QZBw%3BFU4hUQIdxYE8Byn5i2qrrm-PNTGPGMyTpTQ_zw
&mra=ls
&mrsp=1
&sz=12
&via=1
&sll=38.87509,121.48244
&sspn=0.219706,0.233459
&ie=UTF8
&ll=38.87509,121.48244
&spn=0.219706,0.233459
&output=embed
查了一下,只找到一篇英文的wiki算是比较全。尝试翻译一下。以下是翻译,不完全是翻译。
注:听从@sagasw的建议,将中文和英文内容分开。
Google Map参数
下面是一个关于可以传递给maps.google.com(以及.co.uk/.be等)的一些参数的清单。如果你想通过Google Maps显示驾驶路线,而这些API并没有提供,你就可以使用它们。
一般性的内容
q=
这是最常用的参数。
查询 - 所有被传入这个参数的内容会被象maps.google.com中的查询输入框中所输入的内容一样被处理,特别是:
- 要查找的精确地址,标记点或者在某个特殊点上显示的信息框。
- 提示:在附近不能有类似或者著名的地点的查询值才是可靠的。例如,给出一个会议通知,告诉人们去128号门牌号码的地点,但是只能在街区信息中发现一个12-8的位置(比如6/2010,谁会知道它以后会被匹配到什么信息?)
- 城镇名字,或者前面的部分邮政编码,会显示到标记或者信息框里。
- 由纬度和经度信息指定的位置,用十进制形式,比如(52.123N,2.456W或52.123,-2.456),或者采用度/分/秒来表示(52 7 22.8N,2 27 21.6W或52 7 22.8,-2 27 21.6),或者度和分(52 7.38N,2 27.36W或52 7.38,-2 27.36)。
- 在信息窗口和侧边栏中以粗体显示的文本内容,增加括号()。你可以在不希望断行的的时候使用%A0防止断行发生。你还可以在行尾增加足够多的%A0,并在后面跟一个空格(在URL中使用+号)来强制产生断行。例子如原文指出:URL: http://maps.google.com?q=New+York,+NY+(Mapki%A0is%A0a%A0very%A0good%A0Wiki%A0for%A0Google%A0Maps!%A0%A0%A0%A0%A0%A0%A0%A0+The%A0previous%A0line%A0is%A0now%A0sufficiently%A0long!)
- to和from需要激活驾驶线路规划功能。
- 关键字near和loc:会激活本地搜索功能。
- 两个街之前可以用空格&空格形式,但是在URL里需要使用+%26%或%20%26%20,而不是+&+或+&+。
- 需要指出的是+号,其实它与,号的作用相同。
- 位置信息也可以由在@符号后的十进制形式来表达,如(@52.123,-2.456)。这个方式应该会自动给出一个较低的缩放比例。使用这种格式会影响到查询的其它参数。@符号,而不是near或者loc:可以形成单一的查询结果。而其它的方式可能返回数以千计的结果。
- [email protected],-0.227721
可以在指定的地址放置一个自定义的提示标记,比如q=唐宁街10号不在这里@51.50335,-0.227721。- 这个标签不能是国家的名字,或者没有显示出标记的时候。但是当给出座标的情况下,它可以是空白的。
- 座标之外增加()标签可以为Google地图提供一些提示。
- http://maps.google.com/maps?q=24.197611,120.780512
我们的位置正好在某被错误标识的知名地点附近。读者应该可以注意到正确的绿色箭头。 - http://maps.google.com/[email protected],120.780512
Dan标签可以扩展成为某机场的名字(Danville Regional Airport) - http://maps.google.com/maps?q=24.197611,120.780512+(Dan)
这种情况会安全一些。但是显示的是一个黄色的标记。 - http://maps.google.com/maps?q=loc:24.197611,120.780512这是一个精确的地点表示。
- http://maps.google.com/maps?q=24.197611,120.780512
- 要注意用%表述非ASCII字符,比如(和)还有+是安全的,但是空格必须以%20表示。注意它们可能被用户的浏览器解释错误。
- sky:前缀用来查询由Sky产生的KML内容。这个参数是被Google Sky使用,并产生KML输出。
- 包含GeoRSS数据的Google Earth .KML/.KMZ文件或者RSS输出的完整URL,可以被Google Earth使用,里面包含的信息可以被显示在地图上。
near=
可以使用位置信息的一部分,而不是象q=参数那样输入全部信息。
g=
这是一个给q参数提供额外上下文信息的地址或位置。Google Maps在这里自己用来保存上一次运行的搜索。注:如果这是第一次运行,它将包含你所开始的位置信息。所以它有潜在的信息泄露的风险,你需要检查你是否真的明白并且要分享这个参数所对应的信息。
Search Mode/查询模式
- mrt=指出查询的类型(空白表示所有内容-缺省)
- mrt=all值为all指出查询所有内容。
- mrt=loc值为loc指出是进行位置信息查询,它需要q=参数。
- mrt=yp值为yp指出是商业查询(即:黄页),它也需要q=信息,一般情况下是位置信息。
- mrt=websearch值为websearh指出映射的web页面。这些网页通过GoogleBot能够指出地理位置信息。
- mrt=realestate值为realstate为固定资产查询。
- mrt=ds值为ds时为相关的地图。Google的GeoRSS源索引(可能是KML?)
- start=start=参数会跳过前(start-1)个匹配结果。
- num=num=参数显示,最多这个数量的匹配结果。合法的范围是0到20(但是0有点没有用处)。
Location/位置信息
- ll= 显示地图时中心点的纬度、经度信息。要注意次序。而只接受十进制数值格式才可以。
如果使用了这个参数但是没有使用查询,那么地图就以这个点为中心点显示,但是没有标记或信息窗口显示。 - sll=
商业查询执行时指定的点的纬度和经度。你可以使用它来执行一个偏离中心的商业搜索。Google使用它,所以在执行完一个商业查询后,中心移动后可以使用“链接到此页”来记录地图位置。使用将返回与maps.google.com相同的结果。 - spn=spn=大致的经纬区域。如果没有指缩放参数z=,那么将调整缩放水平到一个合理的数值。
- sspn=
屏幕区域,计算方法:
- latlng=这是一个奇怪的参数。它有3个由,号分隔的数字。前两个数字(大概相当于纬度和经度的100000倍)被忽略。第三个数字似乎是Google内部用来处理特殊业务的企业ID。比如latlng=0,0,14944637421527611642代表Blackpool社区教堂。指定此参数会执行一个针对该业务面页的Google搜索,并显示一个小地图。其它参数,特别是q=参数,必须是有效的内容(但不一定涉到目标业务)。
- cid= Similar to latitude and longitude, but generating a different map size.
这个值似应该是地点的编号。原文的表述与latlang重复。 - geocode=
geocode值似乎是在线路规划时各关键点的编码。每个geocode之间使用%3B来分隔。 - radius=在指定半径内采用本地化信息。需要sll参数指定信息或者类似中心点位置才能使用。单位会采用英里,但是在公制国家可能会采用公里。这个参数有助预防Google结果远离了结果城市,并让它被限制在指定区域。
Map Display/地图显示
- t=地图类型。m=>常规地图,k=>卫星地图,h=>混合地图,p=>地域地图,e=>GoogleEarth
- z=缩放级别,取值范围1~20。1比例尺最大,20比例尺最小。
- layer=激活图层。目前t表示交通情况。
- lci=激活可以层叠的图层。用,号分隔。
- com.panoramio.all 来自Panoromio的图片
- com.youtube.all来自YouTube的视频
- org.wikipedia.en维基百科(英文)
- com.google.ugc.c752d13e87c4fbd7来自Webcams.travel的网络摄像头。
- transit公共交通
- bike自行车线路
- view=这个参数在测试的时候没有看出分别。
Directions/路径规划
- saddr= 出发点地址。
- daddr=目标地址。
“+to:” 可以使用+to:子句增加多地点线路规划时的目标地址信息,比如daddr=大石洞村+to:马栏广场+to:棠梨沟 - mra ?? 此参数涵义未知,可能的取值:dm/dpe/cc/ls…
- mrcr ??此参数涵义未知,可能的取值:0
- mrsp解析座标到街名。
- mrsp=0打开从座标解析街名
- mrsp=1关闭从座标解析街名
- mrad= 附加目标地址。如果你的行程有三个地点,你可以用saddr=,daddr=和mrad=表示,而不采用+to:子句。
- dirflg 路线类型。
- dirflg=h避免高速公路。
- dirflg=t避免收费路段。
- dirflg=r采用公共交通。仅在一些区域可用。还可以提出附加的时间信息。
- dirflg=w步行方式。仍在测试状态。
- dirflg=b骑行方式。仅在某些区域可用,仍在测试状态。
- via=用,号分隔的经由地址。
- doflg=距离单位。缺省的是国家的法定标准。
- doflg=ks ??这个真不知道。
- doflg=ptk输出距离单位显示为公里。
- doflg=ptm输出距离单位显示为英里。
- ttype= 时间类型。在dirflg=r的状况下采用公共交通工具的时候date和time参数的解析类型。
- ttype=now现在就出发,这个会忽略date和time参数。
- ttype=dep 出发时间。
- ttype=arr 到达时间。
- date= 出发/到达日期,格式mm/dd/[yy]yy。由ttype决定是哪个日期。
- time= 出发/到达时间,格式hh:mm am|pm。由ttype决定是哪个时间。
- sort= 公共交通线路的排序
- sort=def缺省的排序方式。最快的行程优先。
- sort=num最少的换乘优先。
- sort=walk最少的步行优先。
- start=与搜索模式很象,选择第n个结果。
Street View/街景
- cbll= Latitude,longitude for Street View.街景的经纬度信息。
- cbp= Street View window that accepts 5 parameters街景窗口可以接受5个参数:
- 街景/地图安排,11=上半部街景,下半部地图,12=大部分是街景显示,角部为可以调整角度的地图
- 移轴角度,范围是-90到90度。
- 缩放范围,0~2
- 斜度(采用度数表示),-90~90,缺省值是5
- panoid=这里的ID是附近的全景对象的ID。全景对象采用可以点击的小箭头,你可以移动到下一个对象。
Output Control/输出控制
- hl=主机语言。仅支持一部分语言,如hl=fr表示法语
- om=这个参数指定下方缩略图是否显示。如果指定一个1以外的值,缩略图会关闭。(经过测试1,2会显示)。如果参数会被省略或者指定了值1,则显示。
- ie=指定输入的字符编码,比如ie=UTF8。
- oe=指定输出的字符编码,比如oe=UTF8。
- output=指定输出格式,空白(缺省值)是标准的网页格式。
- output=html在整合到Google地图前使用旧风格的Google本地页面格式,显示小地图和大的边栏风格。
- output=js输出Google地图使用的JavaScript对象和函数调用,包括驾驶线路的多边形编码和HTML格式的场景信息。
- output=kml输出包含当前地图信息的KML文件。
- output=mobile针对移动设备的格式输出。在地图中央位置显示一个简单的红色图钉。所有的移动基于链接而不是鼠标的移动。
- output=nl输出Google Earth和Google Maps可以获取NetworkLink信息的KML文件内容。
- output=embed输出可以嵌入到第三方网站的HTML内容。这个参数仅与加密的s=参数一块工作,据推测可能是阻止显示不可预知的内容。
- output=dragdir返回JSON对象。此对象包括反向的地理位置编码和针对给定saddr(线路开始点)和daddr(线路结束点)线路的多边形编码。
- output=georss 针对当前地图(可能仅适用于MyMaps)的GeoRSS输出。
- f=控制查询表单的显示风格。
- f=d显示成路径规划表单(有两个输入框,始点、终点)
- f=l此参数似乎没有作用了。
- f=q缺省的显示方式,单一输入框。
- pw=激活打印模式,初始化打印。与原文不同,pw=1/2两个值均可以。测试环境是Ubuntu 11.04+Google Chrome。
- v= 如果指定了output=kml,则此参数指定kml的版本。缺省是2.0,如果想指定是2.2,则v=2.2。
提示信息窗口
信息显示窗口就是漫画书中的对话气球框。
- iwloc=指出显示哪个提示窗口。比如q=横山寺&iwloc=A,将显示标记A所指示的位置。
在商业搜索中,iwloc=A到iwloc=J将根据标记打开对应的信息窗口,并且iwloc=near将覆盖绿色的大箭头,如果它正被显示出来。- iwloc=addr
iwloc=addr 的写法可以用来打开指定的地址所对应的提示框。路径规划中支持iwloc=start,iwloc=end,iwloc=pause1等写法。原文的例子不易测试,可以采用下面方法,比如:http://maps.google.com/maps?q=%E6%A8%AA%E5%B1%B1%E5%AF%BA&iwloc=9755670891526949157,其中iwloc的值即为:http://maps.google.com/maps/place?cid=9755670891526949157&q=%E6%A8%AA%E5%B1%B1%E5%AF%BA&ved=0CBsQ-gswAQ&sa=X&ei=SmraTZXgDJKdkAWU0f3PCQ&sig2=wG3VwvZANovxLFGR5ak0Eg中cid=所指出的值。
- iwloc=addr
我的地图
- msa=参数目前应该没有意义了。
杂项
- vp= 这个参数会使Google地图切换到版权服务模式。它以JavaScript格式返回所有者的版权信息而不是返回可以画出地图的html内容。vp参数指出视图位置(即地图的中心位置)。版权服务仅在提供了spn=和z=参数的情况下才可以工作。它们分别代表区域和缩放比例。一还有一些可选的参数,比如t=,它用来指出地图的类型,key=用来指出站点用来执行查询时所用到的API key。例如:http://maps.google.com/maps?spn=0.030372,0.068665&z=6&t=h&vp=53.859462,-3.038235
- ftr=0 这个参数是用来关掉所有Google地图实验室特性的。当你遇到这些特性出现问题或者无法载入地图,这个特性可能提供有用的途径。使用这个参数之后,你需重新激活那些实验室特性。比如访问:http://maps.google.com/maps?ftr=0。这个链接会提示你关掉了哪些特性,并且会提示是否保存这种改变。
- source= 未知。一个值是s_d,另一个是s_q。
- noexp= 未知。其中一个值是0。
- noal= 未知。其中一个可取值是0。
- oi=nojs 在它合并到Google地图之前使用旧风格的Google本地页面格式,使用小地图和大的边条,就象前面指定output=html选项那样。这个选项需要停止JavaScript的工作。
参考资料: