热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

百度地图JavaScriptAPI学习之逆地址解析

获取地图数据之逆地址解析上篇博文我们说了地址解析,即通过我们自己提供的地址信息来解析出该地址所对应的地理位置坐标(或称经纬度)。现在我

获取地图数据之逆地址解析

上篇博文我们说了地址解析,即通过我们自己提供的地址信息来解析出该地址所对应的地理位置坐标(或称经纬度)

现在我们再来看一下逆地址解析。

逆地址解析服务【官方介绍请点这里】

根据坐标点获得该地点的地址描述,是地址解析的逆向转换。

这里写图片描述

使用方法


  • 您可以通过Geocoder.getLocation()方法获得地址描述。
  • 当解析工作完成后,您提供的回调函数将会被触发。
  • 如果解析成功,则回调函数的参数为GeocoderResult对象,否则为null

getLocation()方法 【该方法的详情见这里】

这里写图片描述

用法:

var myGeo = new BMap.Geocoder();
//注:第二个参数为回调函数,它的参数是一个GeocoderResult对象;第三个参数options为可选参数,是LocationOptions类型的
myGeo.getLocation(point,function(obj){},options);
//LocationOptions类表示Geocoder的地址解析请求的可选参数。它不可实例化。

GeocoderResult类 【该类的参考详情见这里】

这里写图片描述

基础用法:根据经纬度获取地址

//首先,创建一个地图实例
var map = new BMap.Map("allmap");
//然后进行地图初始化(用一个Point坐标点和缩放级别来初始化地图。)
map.centerAndZoom(new BMap.Point(116.404, 39.915), 11);
/*至此,地图初始化完成*/// 创建地理编码(地理解析器)实例
var myGeo = new BMap.Geocoder();
// 根据坐标得到地址描述
myGeo.getLocation(new BMap.Point(116.364, 39.993), function(result){ if (result){ alert(result.address); }
});

进阶用法:鼠标点击地图获取地址

这里涉及到了一个新的知识点:地图事件及事件处理。【详情介绍见这里】

  • 百度地图API中的大部分对象都含有addEventListener方法,我们可以通过该方法来监听对象事件。
    • 例如,BMap.Map包含click、dblclick等事件。
  • 在特定环境下这些事件会被触发,同时监听函数会得到相应的事件参数e
    • 比如当用户点击地图时,e参数会包含鼠标所对应的地理位置point

var map = new BMap.Map("allmap");
var point = new BMap.Point(116.331398,39.897445);
map.centerAndZoom(point,12);
/*至此,地图初始化完成*/var geoc = new BMap.Geocoder();
//为地图实例添加了鼠标单击的监听行为
map.addEventListener("click", function(e){ var pt = e.point;//第一个参数为要逆解析的坐标点;第二个参数为回调函数geoc.getLocation(pt, function(rs){//回调函数中的参数rs是一个GeocoderResult对象//GeocoderResult对象的addressComponents属性返回了一个结构化的地址描述var addComp = rs.addressComponents;alert(addComp.province + ", " + addComp.city + ", " + addComp.district + ", " + addComp.street + ", " + addComp.streetNumber);});
});

代码示例


<html lang&#61;"en">
<head><meta charset&#61;"UTF-8"><meta name&#61;"viewport" content&#61;"initial-scale&#61;1.0,user-scalable&#61;no"><title>点击地图展示详细地址title><style>html,body{width: 100%;height: 100%;font-family: "Microsoft Yahei";overflow: hidden;margin: 0;}#allmap{width: 800px;height: 500px;margin: 0 auto;}style><script src&#61;"http://api.map.baidu.com/api?v&#61;2.0&ak&#61;3ecea51f560650b1ed8a4b99808f52e8">script>
head>
<body><div id&#61;"allmap">div><script>//百度地图API功能var map &#61; new BMap.Map("allmap");var point &#61; new BMap.Point(116.331398,39.897445);map.centerAndZoom(point,12);//地图初始化完成//地图的配置&#xff1a;启用鼠标滚轮放大缩小功能&#xff08;默认不开启&#xff09;map.enableScrollWheelZoom(true);//创建一个地址解析器的实例var geoc &#61; new BMap.Geocoder();//为地图实例添加了一个鼠标单击的监听事件map.addEventListener("click",function(e){//事件参数e中保存了鼠标单击时所对应的地理位置pointvar pt &#61; e.point;//将鼠标单击时的坐标进行逆地址解析geoc.getLocation(pt,function(rs){//解析的结果是一个对象&#xff0c;且作为参数传入了回调函数中//该对象的属性中保存了解析后的结构化的地址信息var addrComp &#61; rs.addressComponents;console.log(addrComp);//{streetNumber: "", street: "西长安街", district: "东城区", city: "北京市", province: "北京市"}alert(addrComp.province &#43; "," &#43; addrComp.city &#43; "," &#43; addrComp.district &#43; "," &#43; addrComp.street &#43; "," &#43; addrComp.streetNumber)})});script>
body>
html>

效果展示

这里写图片描述


推荐阅读
  • 使用ArcGIS for Java和Flex浏览自定义ArcGIS Server 9.3地图
    本文介绍了如何在Flex应用程序中实现浏览自定义ArcGIS Server 9.3发布的地图。这是一个基本的入门示例,适用于初学者。 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 本文将继续探讨 JavaScript 函数式编程的高级技巧及其实际应用。通过一个具体的寻路算法示例,我们将深入分析如何利用函数式编程的思想解决复杂问题。示例中,节点之间的连线代表路径,连线上的数字表示两点间的距离。我们将详细讲解如何通过递归和高阶函数等技术实现高效的寻路算法。 ... [详细]
  • 深入解析 Android 中 EditText 的 getLayoutParams 方法及其代码应用实例 ... [详细]
  • JUC(三):深入解析AQS
    本文详细介绍了Java并发工具包中的核心类AQS(AbstractQueuedSynchronizer),包括其基本概念、数据结构、源码分析及核心方法的实现。 ... [详细]
  • 本文介绍了在 Java 编程中遇到的一个常见错误:对象无法转换为 long 类型,并提供了详细的解决方案。 ... [详细]
  • 深入解析 Lifecycle 的实现原理
    本文将详细介绍 Android Jetpack 中 Lifecycle 组件的实现原理,帮助开发者更好地理解和使用 Lifecycle,避免常见的内存泄漏问题。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • 本文介绍了如何利用 `matplotlib` 库中的 `FuncAnimation` 类将 Python 中的动态图像保存为视频文件。通过详细解释 `FuncAnimation` 类的参数和方法,文章提供了多种实用技巧,帮助用户高效地生成高质量的动态图像视频。此外,还探讨了不同视频编码器的选择及其对输出文件质量的影响,为读者提供了全面的技术指导。 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • 在处理 XML 数据时,如果需要解析 `` 标签的内容,可以采用 Pull 解析方法。Pull 解析是一种高效的 XML 解析方式,适用于流式数据处理。具体实现中,可以通过 Java 的 `XmlPullParser` 或其他类似的库来逐步读取和解析 XML 文档中的 `` 元素。这样不仅能够提高解析效率,还能减少内存占用。本文将详细介绍如何使用 Pull 解析方法来提取 `` 标签的内容,并提供一个示例代码,帮助开发者快速解决问题。 ... [详细]
  • 本文全面解析了JavaScript中的DOM操作,并提供了详细的实践指南。DOM节点(Node)通常代表一个标签、文本或HTML属性,每个节点都具有一个nodeType属性,用于标识其类型。文章深入探讨了DOM节点的创建、查询、修改和删除等操作,结合实际案例,帮助读者更好地理解和掌握DOM编程技术。 ... [详细]
  • 利用 Zend Framework 实现高效邮件发送功能 ... [详细]
author-avatar
Owi妓l_972
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有