BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

搜狗地图API正式发布

| 作者 崔康 关注 0 他的粉丝 发布于 2011年6月18日. 估计阅读时间: 20 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

最近,搜狗地图API正式发布,至此,几乎所有主流互联网地图服务商都对外发布了接口,供第三方使用。本文介绍了搜狗地图API的基本情况,并盘点了其他主要互联网地图服务商的特点。

搜狗地图API是一套由JavaScript语言编写的应用程序接口,它支持用户在自己的网站中构建操作简单、功能丰富的地图应用,里面包含构建地图基本功能的各种接口,提供了诸如位置搜索、周边查询、出行路线规划等功能服务。该地图API免费提供,适用于各种网站。随着Web 2.0的发展,互联网地图的应用越来越广泛,很多商家都喜欢在自己的网站上嵌入一些地图信息,比如:连锁机构网站可以用地图展示遍布各地的分支机构;团购网站可以给商家团购信息中加入地图说明位置,并支持用户能在地图上查找身边的团购信息;房产中介,可以在网站上提供地图找房功能,不管是买房还是租房,用地图方式查找最实用;更多的像旅游、酒店、餐饮等垂直型网站,凡是与地理位置相关的,都可以嵌入地图应用,以更好地服务用户。

搜狗地图API简单易用,比如要创建一个800*600的地图区域,并显示地图,基本代码如下所示:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv=X-UA-Compatible content="IE=EmulateIE7" />
<script type="text/javascript" src="http://api.go2map.com/maps/js/api_v1.0.js "></script>
<title>Sogou maps api v1.0</title>
<style type="text/css">
#map{position:absolute;width:800px; height:600px;margin:auto;}
v\:* {behavior:url(#default#VML);}
</style>
<script type="text/javascript">
   <!--
   function initialize()
   {
       //创建地图对象
       var _m = new sogou.maps.MapClient(document.getElementById("map"));
       //设置打开地图时默认的显示状态
       _m.coordRecenterTo(12956000,4824875,10);//设置地图中心点及显示级别
       //初始化地图
       _m.init();
   }
   //-->
</script>
</head>
<body onload="initialize()">

代码说明

  • 载入地图API
    <script type="text/javascript" src="http://api.go2map.com/maps/js/api_v1.0.js "></script>
    http://api.go2map.com/maps/js/api_v1.0.js网址指向 Javascript 文件所在的位置。该文件会载入使用Sogou Maps API所需的全部符号和定义。用户的网页必须包含指向该网址的script标签。
  • 地图DOM元素
    <div id="map"></div>
    要在网页上显示地图,我们必须为其留出一个位置。通常,我们的做法是创建一个名为div的元素,然后在浏览器的文档对象模型(DOM)中获取此元素的引用。
  • 为地图DOM元素设置样式
    <style type="text/css">
    #map{position:absolute;width:800px; height:600px;margin:auto;}
    v\:* {behavior:url(#default#VML);}
    </style>
    用户可以通过样式表自行指定地图DOM元素的大小。
  • 其它设置
    <meta http-equiv=X-UA-Compatible content="IE=EmulateIE7" /> 兼容IE8
    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" >为绘制线面对象指定命名空间
    在css中加入 v\:* {behavior:url(#default#VML);} 用于矢量绘图                    
  • 初始化地图
    //创建地图对象
    var _m = new sogou.maps.MapClient(document.getElementById("map"));
    //初始化地图
    _m.init();                    
    上面的都加好后,添加创建地图区域并显示初始化的地图的代码。因为所有的操作都是基于地图的,只有地图初始化成功之后,很多类的属性与方法才可以被调用。
  • 事件侦听
    地图客户端的大部分接口是事件驱动的,所以事件侦听在地图客户端中很重要:
    //创建地图对象
    var _m = new sogou.maps.MapClient(document.getElementById("map"));
    //添加初始化完毕的事件侦听
    sogou.maps.SEvent.addListener(_m,"inited",function(a)
    {
       alert("初始化完毕触发事件!")
    });
    //初始化地图
    _m.init();
    //添加点击地图区的事件侦听
    sogou.maps.SEvent.addListener(_m.map,"click",function(a,b)
    {
     alert("坐标为:["+b.x+","+b.y+"]")
    });
    以上例子是当发生inited事件时,弹出一个信息对话框;当点击地图时,弹出坐标信息。 注意:事件侦听是要在该事件发生前绑定,不能等事件已经发生了才绑定侦听。如:inited事件一定要在init()方法调用前侦听。而_m.map 的click事件,由于是在init之后才创建_m.map对象,所以要放在init()方法之后,但还是在点击地图的click事件发生之前侦听的。

搜狗地图API支持的浏览器包括:

  • IE 6.0+ (Windows) 以及ie内核的其他浏览器,如:搜狗高速浏览器、遨游浏览器、360浏览器、世界之窗浏览器等。
  • Firefox 2.0+ (Windows|Mac|Linux)
  • Safari 3.1+ (Mac|Windows)
  • Chrome谷歌浏览器 (Windows)
  • Opera 10+ (Windows)

另外,Web开发人员如果不想使用地图API,也可以使用搜狗地图名片的功能。目前,搜狗地图规定,使用地图API的用户所提供的服务必须是免费的,如果有商业用途,必须获得搜狗地图书面授权。

报道,国内互联网地图服务市场的争夺日趋白热化。据不完全统计,当前我国从事互联网地图服务的网站约4.2万个。但随着国家对互联网测绘资质严格管理,互联网地图市场服务逐渐规范。

不过,目前搜狗地图仍然处于不盈利的状态,搜狗地图副总经理庞欣透露:

搜狗地图通过广告等形式有一小部分收入,但不成规模。其中,主要的原因是,地图的展示空间有限,形式有待创新。拥有100多人的搜狐地图每年投入上千万元,进行持续开发。

搜狗地图曾经靠“点坐标”(即在地图上标出商家信息)的方式一年能获取两三千万元收入,但搜狐最终将这种盈利模式撤销,这其实挺影响网民使用体验,而且对搜狐来说,也只是较小规模的收入。因此,搜狐就终止这项商业开发。

目前互联网地图的商业还处于初级阶段,LBS也还停留在概念阶段,没有真正成熟的应用。对于用户来说,LBS只是一扇门,敲开这扇门后,用户需要看到更加精彩的应用。

​除了搜狗,其他主流互联网地图服务商都对外开放了API,我们来简要盘点一下​各个地图API的特点。

谷歌地图API

谷歌地图API包含的种类很多,包括:

  • Google Maps JavaScript API——使用JavaScript在网页中嵌入Google Map,还可以通过多种服务操作地图并添加内容。
  • Google Maps API for Flash——使用此ActionScript API在基于Flash的网页或应用程序中嵌入Google Map,还可以通过多种服务在三维模式下操作地图并添加内容。
  • Google Earth API——在网页中嵌入真实的3D数字地球仪。访问者无需离开网页便可游览世界,甚至身临其境感受深邃广袤的海洋。
  • Google Static Maps API——在网页或移动网站上嵌入快捷、简单的Google Maps图片,而无需使用JavaScript或载入任何动态网页。
  • 网络服务——使用网址请求访问客户端应用程序的地址解析、路线、海拔和商家信息,并在JSON或XML中处理结果。 

Google Maps JavaScript API 为例,其第3版专为移动设备设计,速度更快,更适用,而且不再需要申请API访问密钥。它同时也适用于传统的桌面浏览器应用程序。​谷歌地图API的功能很强大,其中包括:

地理定位

地理定位指通过各种数据收集机制识别用户或计算设备的地理位置。通常而言,大多数地理定位服务使用网络路由地址或内部GPS设备来确定该位置。请注意,地理定位是特定于设备的API。某些浏览器/设备支持地理定位,但某些则不支持(或无法支持),因此开发人员不能始终假定网络应用程序具备该功能。

目前,在浏览器中可通过以下几种方式检测用户的位置。这些方法都不属于Google Maps API,而是公用的行业标准。一些较新版本的浏览器正开始支持W3C Geolocation标准。此标准是HTML5的一部分,以后很可能会成为真正的标准。所有希望执行地理定位的应用程序都应当支持此标准。某些带Google Gears的浏览器可以使用Google Gears Geolocation API。由于即将实现对W3C标准的广泛支持,因此,检查Gears不失为一项好的后备方案。某些浏览器使用IP地址来检测用户的位置,不过这种方式只能提供很粗略的估计。由于用户的IP地址只能提供对用户位置的粗略估计,因此我们不建议使用这种地理定位方法。W3C是最简单且支持最广泛的方法,应优先采用此方法,然后再考虑其他方法。如果Web开发人员决定使用Google Gears,那么首先应检查浏览器是否支持W3C标准。(请注意,如果要使用Google Gears,则需要载入Gears初始化 JavaScript。)

语言本地化

Google Maps API在显示文本信息(如控件名称、版权声明、行车路线和地图上的标签)时,使用浏览器的首选语言设置。大多数情况下,这是可取的做法,通常开发人员不会想覆盖用户的首选语言设置。不过,如果希望更改Google Maps API以忽略浏览器的语言设置,并强制浏览器采用特定语言显示信息,那么可以将可选的language 参数添加到包含Maps API JavaScript 代码的 <script> 标记,以指定要使用的语言。

在地图中添加街景视图

Google街景视图提供了从指定道路对整个覆盖范围的360度全景视角。街景视图API的覆盖范围与Google Maps应用程序 (http://maps.google.com/) 的覆盖范围相同。Google Maps JavaScript API提供街景视图服务,可用于获取及处理在Google Maps街景视图中使用的图像。与在V2 API 中不同,浏览器本身支持Google Maps JavaScript API V3的街景视图服务。要在地图中添加街景视图,开发人员只需要添加街景视图控件。要添加此控件,请在地图的MapOptions内将streetViewControl设置为true。显示的地图将带有一个街景视图街景小人控件。街景视图街景小人控件可让开发人员直接在地图内查看街景视图全景。点击并按住街景小人时,地图将更新以显示启用街景视图的街道。

样式化地图

通过StyledMapType,开发人员可以自定义标准Google基本地图的显示形式,更改诸如道路、公园和建筑物区域等元素的显示,以体现与默认地图类型中所用样式不同的样式。这些组件称为地图项,开发人员可以通过StyledMapType选择这些地图项,并将可视样式应用于地图项的显示(包括隐藏全部地图项)。借助这些更改,可以在地图上强调特定组件或周围页面的补充内容。StyledMapType() 构造函数采用MapTypeStyles数组作为参数,每个数组均由选择器和样式器组成。选择器指定应选择以应用样式的地图组件,而样式器指定这些元素的可视修改。

虽然谷歌地图API的功能非常强大,但是目前面临关键时期。据易观分析称,2011年中国手机地图市场谷歌占据近半份额,谷歌地图能否申请到甲级资质成为关键。​  据报道,谷歌中国在华合资公司——北京谷翔信息技术有限公司已经正式提交了关于谷歌地图牌照的相关申请。根据规定7月1日前拿不到互联网地图服务资质,谷歌地图必须关闭在中国内地的运营。 一直不符合《关于修改〈外国的组织或者个人来华测绘管理暂行办法〉的决定》的谷歌,在今年6月7日得到转机。国家测绘地理信息局召开发布会,负责人表示,外国的组织或者个人来华从事互联网地图服务活动的,必须依法设立合资企业。只申请互联网地图服务资质的中外合资企业,其外方投资者的出资比例,最终不得超过50%。  这一规定使得谷歌中国在华的合资公司北京谷翔有资格进行申请。易观分析称,未来手机地图市场的竞争会在客户端和手机地图API两个领域展开,谁的基础地图服务数据接口能被更多更庞大的周边软件用户群调用,谁就可以掌握最核心的LBS用户资源。各大手机地图厂商高度重视API的开放工作,无论是Check-in、移动SNS,还是手机微博、手机团购等软件,无一例外地积极引入了手机地图API服务。据了解,测绘的资质目前分甲级和乙级,只有甲级证才可以通过API将地图数据提供给第三方,如果只申请到乙级资质,只能做自己的应用。谷歌地图能否申请到甲级资质成为了众多第三方开放商共同关心的问题。

百度地图API

百度地图API也是JavaScript接口,​在今年5月底月发布的1.2版本中新增了以下功能:

  • 公交路线信息查询
  • 底图渐现效果
  • 驾车、步行结果展示方式配置
  • 支持添加点热区数据

目前百度地图API已应用于人人网​、酷讯、安居客、艺龙网等。​

图吧(Mapbar)API

图吧API提供互联网和移动设备两种接口,​支持JavaScript和Flash编程,不过需要注册API密钥,支持的浏览器有限,包括​Internet Explorer 6.0或更高版本、Firefox 2.0或更高版本。同时,图吧对高级用户提供收费服务,主要是搜索API,比如本地搜索、公交线路查询、公交换乘查询、交站点查询等。移动设备API目前仅支持Android平台,且无需注册密钥。

我要地图(51ditu)API

我要地图除了提供JavaScript和Flash接口API,还增加了以下访问接口:

51ditu的API目前已应用于中国移动、有道、新浪、我爱我家等。

MapABC API

MapABC的互联网API提供了Flash、Javascript、Flex和Silverlight四种接口,移动版API支持Android、Windows Mobile、iOS、Symbian等平台。MapABC API访问同样需要申请密钥,网站上还提供了一些构建在该API基础之上的应用,包括么卡、RZ实时交通图分享、GPSTracker、摩天轮等。

国内互联网地图市场还处于成长阶段,​随着搜狗地图API正式开放,市场竞争会更加激烈。如果谷歌地图未能按时​取得牌照,其他提供商将争夺其留下的发展空间。一方面,地图服务商需要凸显自己的优势,吸引客户并逐渐实现盈利;另一方面,第三方使用者需要谨慎地选择可靠的地图API厂商,以得到稳定的基础设施。​

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT