【百度地图API】当地址解析失败时,如何调用search方法查找地址

原文:【百度地图API】当地址解析失败时,如何调用search方法查找地址

有个朋友问我,当地址解析失败时,应该如何处理呢?比如,他想搜索“南宁市青秀区”。

-----------------------------------------------------------------------------

首先,我们需要弄明白,地址解析的原理

使用Geocoder进行地址解析,比如“北京市海淀区上地10街”,当系统匹配到这个地址时,getPoint就会返回一个坐标点。
这里需要用到回调函数。
var myGeo = new BMap.Geocoder();// 将地址解析结果显示在地图上,并调整地图视野
myGeo.getPoint("北京市海淀区上地10街", function(point){
if (point) {
map.centerAndZoom(point, 16);
map.addOverlay(new BMap.Marker(point));
}}, "北京市"); 

当系统无法匹配“北京市海淀区上地10街”的时候,会返回“北京市海淀区”的几何中心点。
如果还是无法匹配,会返回“北京市”的几何中心点。

如果你只是想返回“北京市”的坐标,或者说想要模糊查询,建议不要使用地址解析。
而是使用LocalSearch类的search方法。例子详见:
http://www.cnblogs.com/milkmap/archive/2010/12/22/1914106.html

当地址解析失败时,你可以调用localsearch函数。这个方法被称之为模糊查询

在以下的例子里,为了方便快捷,我取了第一个查询结果。

这样,当地址解析“南宁市青秀区”失败时,会自动search这个地址,并打点在地图上。

完整源代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>地址解析失败时搜索</title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.2"></script>
</head>

<body>
<div id="divMap" style="width:400px;height:400px;border:solid 1px gray"></div>
<script type="text/javascript">
var map = new BMap.Map("divMap");
map.centerAndZoom(new BMap.Point(108.532769,22.825487), 12); //这里是定义到了南宁市
var gc = new BMap.Geocoder();
gc.getPoint("南宁市青秀区", function(pt){
if(pt){
map.addOverlay(new BMap.Marker(pt)); //如果地址解析成功,则添加红色marker
}else{
var ls = new BMap.LocalSearch("南宁市");
ls.search("南宁市青秀区");
ls.setSearchCompleteCallback(function(rs){
if (ls.getStatus() == BMAP_STATUS_SUCCESS){
var poi = rs.getPoi(0); //取第1个查询结果
if(poi){
var pt2 = poi.point;
map.addOverlay(new BMap.Marker(pt2)); //如果查询到,则添加红色marker
}
}else{
alert("fail");
}
});
}
}, "南宁市");
</script>
</body>
</html>

时间: 2025-01-26 17:38:55

【百度地图API】当地址解析失败时,如何调用search方法查找地址的相关文章

百度地图api如何使用_javascript技巧

如果想用百度地图api,首先需要先获取一个百度地图api的密钥,然后引入百度地图的api,接下来,我们详细介绍下获取.引入api密钥的技巧,以及通过代码给大家详解下百度地图api如何使用,具体请看下文. 首先 ,如果想调用百度地图api,你需要获取一个百度地图api的密钥. 申请密钥很简单,在百度地图api的首页就有相关链接,填写相关信息百度就会给你一个密钥了. 接下来,就是引入百度地图的api 关键代码如下: 复制代码 代码如下: <script type="text/javascrip

【百度地图API】批量地址解析与批量反地址解析(带商圈数据)

原文:[百度地图API]批量地址解析与批量反地址解析(带商圈数据) 摘要:因为地址解析的webserives方式还没有开通,所以先用JS版本的地址解析接口来批量获取地址解析数据吧,同时还能得到商圈的数据呀~~ ---------------------------------------------------------------------------------------------------------------------------------- API和SDK都可以不展示地

【百度地图API】如何进行地址解析与反地址解析?——模糊地址能搜索到精确地理信息!

原文:[百度地图API]如何进行地址解析与反地址解析?--模糊地址能搜索到精确地理信息! 摘要: 什么是地址解析? 什么是反地址解析? 如何运用地址解析,和反地址解析? 可以同时运用地址解析,和反地址解析麼?答案是,可以的.详见最后一个示例与代码. --------------------------------------------------------------------------------- 一.地址解析 地址解析,是用户输入一个详细到门牌号的地址.例如"北京市中关村南大街27

百度地图API提示230 错误app scode码校验失败的解决办法

笔者近2天在 Android Studio上玩了一下百度地图,碰到了常见的"230错误 APP Scode校验失败",下面我来介绍一下具体的解决办法. 1.在andriodstudio上部署百度地图的规范.把下载下来的SDK解压,切换至Project视图.复制以下3个文件到libs文件下. 跟我申请AK时候sha1完全不一样.所有地图只显示方格子,没有地图加载.并提示"230错误 APP Scode校验失败".去API控制台修改SHA1与Logcat对应,地图加载成

如何调用百度地图API实现手机自动定位_Android

最近由于项目需要,研究了下百度地图定位,他们提供的实例基本都是用监听器实现自动定位的.我想实现一种效果:当用户进入UI时,不定位,用户需要定位的时候,自己手动点击按钮,再去定位当前位置.经过2天研究和咨询,找到了解决方案,在此备忘一下. //声明地址解析器 var geoc = new BMap.Geocoder(); //自动定位 var autoLocation = function () { if (navigator.geolocation) { //判断浏览器是否能获取当前位置 nav

百度地图API的使用

好奇怪,习惯性使用有道云笔记记录心得与知识后就很少用博客园来记录了. 但是后来想想,有些东西还是要整理记录下来的好,多个备份也好.   -------------------------------------------- 下面正题,最近公司项目用百度地图API较多.后面还有使用高德地图API,后续整理记录上.   1.初始化地图,并设置地图中心点 var map = new BMap.Map("allmap"); // 创建Map实例 map.centerAndZoom(new B

【百度地图API】如何根据摩卡托坐标进行POI查询,和计算两点距离

原文:[百度地图API]如何根据摩卡托坐标进行POI查询,和计算两点距离 摘要: 百度地图API有两种坐标系,一种是百度经纬度,一种是摩卡托坐标系.在本章你将学会: 1.如何相互转换这两种坐标: 2.使用该坐标进行反地址解析: 3.坐标附近全部POI的查询: 4.计算两点间的距离. ------------------------------------------------------------------------------ 最终画面效果图   百度地图API常用两种坐标系,一是球面

百度地图API之本地搜索与范围搜索_javascript技巧

地图服务是指可以提供数据信息的接口,比如说本地搜索/路线规划等,下面小编给大家整理下百度地图API之本地搜索和范围搜索,具体请看下文. 地图服务概述 地图服务是指那些提供数据信息的接口,比如本地搜索.路线规划等等.百度地图API提供的服务有: LocalSearch:本地搜索,提供某一特定地区的位置搜索服务,比如在北京市搜索"公园".TransitRoute:公交导航,提供某一特定地区的公交出行方案的搜索服务.DrivingRoute:驾车导航,提供驾车出行方案的搜索服务.Walkin

Android中使用百度地图API:ItemizedOverlay

Overlay简介 Overlay通常被译为"图层"或"覆盖物".那么对于地图而言,什么称之为覆盖物?"所 有叠加或覆盖到地图之上的内容,都被称之为地图覆盖物,如标注.矢量图形元素(包括:折线和多边形和圆) .定位图标等.覆盖物拥有自己的地理坐标,当您拖动或缩放地图时,它们会相应的移动." 为了让大家 能够对Overlay有更进一步的认识,我们再通过下面的图形来直观的认识它. 图中标记的那些红色的图标 A,B,...,J正是Overlay的其中一