谷歌地图定位
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
您可以通过GClientGeocoder对象访问Google Maps API 地址解析服务,还可以使
用GClientGeocoder.getLatLng()将字符串地址转换成GLatLng。该方法采用了待转换的字符串地址和要在检索地址时执行的回调函数作为参数。该回调函数是必需的,因为地址解析需要向Google 的服务器发送请求,这可能需要一段时间才能完成。
在此示例中,我们会对某个地址进行地址解析,并在该点上添加标记,然后打开显示该地址的信息窗口。请注意,回调函数是作为函数常量进行传递的。
如果您希望访问关于某个地址的结构化信息,则可使用GClientGeocoder提供的getLocations()方法,该方法会返回一个包含以下信息的JSON 对象:
∙Status
∙
o request - 请求类型。在此情况下,它始终为geocode。
o code - 响应代码(与HTTP 状态代码类似),用于表明地址解析请求是否成功。请参见状态代码的完整列表。
∙Placemark - 如果地址解析器查找到多个匹配项,则会返回多个地标。
∙
o address - 格式恰当且大小写正确的地址。
o AddressDetails -- 使用xAL 格式的地址,或称为可扩展地址语言(eXtensible Address Language)(一种设置地址格式的国际标准)。
o
▪Accuracy - 表示指定地址的地址解析所能达到的精确度的属性。请参见可能值的列表。
o Point - 3D 空间中的一个点。
o
▪coordinates - 该地址的经度、纬度和海拔。在此情况下,海拔始终设为0。
以下显示了地址解析器针对Google 总部地址所返回的JSON 对象:
Google 也提供直接通过HTTP 执行的地址解析网络服务。这种地址解析服务与JavaScript Google Maps API 不同。对于动态的地址解析请求或实时的检索地址解析请求,我们不建议使用地址解析网络服务;您可以改为使用本章中介绍的JavaScript 客户端地址解析器。但是,如果您要填充静态数据组、需要进行调试或JavaScript GClientGeocoder对象不可用,则建议使用HTTP 地址解析器。
有关详情,请参见地址解析网络服务。
使用Street View 对象
使用Street View 全景图对象要求客户端浏览器支持Flash 插件。
Google Street View 提供了从指定道路遍及Google Maps 覆盖范围的360 度全景视图。Street View 示例图片如下所示。
Google 街道视图使用Flash® 插件来显示这些交互图像,大部分浏览器都支持该插件。Google Maps API 提供了Street View 服务,用于获取和处理Google Maps Street View 中使用的图像。
新功能!Street View 服务现可提供来自支持的图片存储区(如Panaramio 和Picasa)的用户照片。请参见下方的在Street View 中显示用户照片。
GStreetviewPanorama对象
通过使用GStreetviewPanorama对象可支持街道视图图像,该对象提供街道视图Flash® 查看器的API 接口。要将街道视图合并到地图API 的应用程序中,您需要遵循以下较为简单的步骤:
1.创建一个容器(通常是
2.创建GStreetviewPanorama对象,并将其放置在容器内。
3.初始化Street View 对象,以便引用特定的位置,并显示初始的“视点”(POV)。
4.通过检查603错误值来处理不支持的浏览器。
GStreetviewPanorama对象要求其构造函数内包含一个容器元素,它还可让您使
用GStreetviewPanoramaOptions参数设置其地址(可选)。您可以在构建后在该对象上调用
setLocationAndPOV(),以更改其位置和POV。
注意:尽管街道视图功能专门用来与地图结合使用,但这并非强制性要求。您也可以在不使用地图的情况下单独使用街道视图对象。
有关容器和设置位置及视点的详细信息,将在下文中介绍。
Street View 容器
Street View Flash 查看器需要一个容器DOM 节点,以便在其中显示其内容(通常为
GStreetviewPanorama构造函数需要一个container参数,用于识别在其中显示Street View Flash 查看器的初始容器元素。您可以hide()GStreetviewPanorama对象,以暂时将其隐藏起来;也可以show()该对象,以重新显示查看器。
如果您希望更改Street View Flash 查看器的容器,可随时向其发送setContainer()方法,并传递它应当附加到的新元素。如果该容器的大小经过了重新调整,那么您可以向GStreetviewPanorama对象发送checkResize()方法,可强制重新调整该对象的大小,以使其适应新的尺寸。
如果您希望从DOM 中彻底删除Street View Flash 查看器并释放其内存,请向该对象传递remove()方法。从DOM 中删除街道视图对象的容器元素之前,请务必调用该方法,否则将导致内存泄漏和/或客户端浏览器上发生Javascript 错误。
街道视图位置
Street View 图片由位置(对应于GLatLng)和特定方向(GPov) 组成,这两项共同标识了图片显示的视图。您可以在构建Street View 对象时,使用可选的GStreetviewPanoramaOptions参数来指定这两项参数。
要了解Street View 当前支持的城市列表,请查看Google Maps 帮助中心。要确定某个地点是否支持Street View 数据,有三种基本方法:
∙对于已知有效的Street View 位置,您可以存储其GLatLng。
∙您可以检查GStreetviewOverlay的图块叠加层并直接检查道路网络。支持Street View 的道路会在叠加层上以蓝色突出显示。然后,您就可以使用点击事件或地址解析逻辑
向GStreetviewPanorama对象传递支持的地点了(请参见街道视图叠加层。)
∙您可以使用GStreetviewClient对象,对指定了传递GLatLng的街道视图对象执行查询。
GStreetviewClient对象支持使用大量查询来查找全景数据。(请参见Street View 客户查询)。
请注意,最后两种方法并不精确:在这些情况下,Street View 服务不要求提供(一般也不接收)精确的纬度和经度,而是搜索指定的GLatLng“附近”是否存在全景图数据。
以下示例使用了GStreetviewPanoramaOptions来指定Street View 所使用的初始纬度和经度。POV 项已留空,表明默认视图朝向北方。
var fenwayPark =new GLatLng(42.345573,-71.098326);
panoramaOptions ={ latlng:fenwayPark };
var myPano =new GStreetviewPanorama(document.getElementById("pano"), panoramaOptions);
查看示例(streetview-simple.html)
街道视图错误处理
由于街道视图要求支持Flash® 插件,因此,您需要编写代码来测试用户浏览器是否支持该插件。您也可以通过注册一个对GStreetviewPanorama对象上的error事件进行侦听的事件侦听器,在您的应用程序中进行这项检查。error事件将会传递一个错误代码,您可以根据其进行判断。
下面的示例代码针对是否支持Flash 插件执行快速检查,如果不支持Flash 则显示一个警告对话框。