【百度地图API】如何区分地址解析和智能搜索?

简介: 原文:【百度地图API】如何区分地址解析和智能搜索?摘要: 很多用户一直无法区分地址解析geocoder和智能搜索localsearch的使用场景。该文章用一个详尽的示例,充分展示了这两个类,共5种方法的使用场景。
原文: 【百度地图API】如何区分地址解析和智能搜索?

摘要:

很多用户一直无法区分地址解析geocoder智能搜索localsearch的使用场景。该文章用一个详尽的示例,充分展示了这两个类,共5种方法的使用场景。并在文章末尾贴出全部源代码。

 

工具如下图:

 

 

小贴士:

如果你手里有一大批从第三方获取的地址信息(并且只有地址信息),建议您采取如下步骤:

第一、使用百度地图API的地址解析接口,将地址解析为经纬度point数据,并存储在数据库中,方便以后查询和使用;

第二、如果有些地址解析失败了,请使用坐标拾取工具,人工地找到经纬度point信息,并同样储存起来。(坐标拾取工具,请点击这里。

记住,只有经纬度point信息,能让你打点的位置万无一失!

 

 

解说:

什么是地址解析?

地址解析,即Geocoder类,是根据一个地址得到对应的经纬度point。注:地址需要详细到街道,例如“北京市海淀区中关村南大街”。

 

地址解析类有两个方法,一是getPoint,通过详细到街道的地址,得出一个经纬度。

地址解析的格式如下:省+城市+区县+街道 (可以不用门牌号)

 

地址解析成功的例子:北京市 北京市 海淀区 中关村南大街 27号

这是地址解析一定会失败的例子:南京路工行(1、根本没有指定城市,区县。中国有很多城市有南京路,不清楚到底是那一条南京路。2、南京路上可能有不止一个工行,比如银行,ATM,办事处等。)

 

另外一个是getLocation,又称反地址解析。它利用经纬度point,得出一个详细的地址。

 

 

 

什么是智能搜索?

智能搜索,即localsearch类,可以根据任意关键词查询到对应的POI信息。

关键词可以是“上海市麦当劳”“重庆市解放碑”,当没有城市信息时,默认在当前城市进行搜索。

Localsearch类会根据关键词的内容,智能地搜索POI的title和content信息。比如,搜索“家乐福”时,也能搜索到家乐福附近的面馆,停车场等信息。

智能搜索有三种方法,分别是:search、searchInBounds和searchNearby。利用此三种方法可以搜索到百度地图数据库中所有POI信息。


 

 

展现结果:

1、地址解析geocoder类

getPoint方法

 

 

 

getLocation方法

 

 

 

 

2、智能搜索localsearch类

search方法

 

 

searchInbounds方法

 

 

searchNearby方法

 

 

 

清除上地图所有覆盖物,map.clearOverlays();

清除检索结果,myLocalsearch.clearResults();

 

 

 

秘籍:

搜索“肯德基”“招商银行”这样的关键词时,使用智能搜索localsearch

搜索详细到街道的地址时,如“北京市海淀区中关村南大街27号”,使用地址解析geocoder

 

 

 

 

全部源代码:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>地址解析和智能搜索</title>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.2"></script>
</head>
<body>
<h2>1、地址解析Geocoder</h2>
<input style="width:300px;" type="text" value="上海市浦东新区花木路" id="address_1" /><input value="地址解析" type="button" onclick="fun_geocoder_getPoint();" />(getPoint:需要输入详细到街道的地址)</br>
<span style="display:inline-block;line-height:20px;width:300px;font-size:14px;border-bottom:1px solid #ccc;" type="text" id="address_2"></span><input value="反地址解析" type="button" onclick="fun_geocoder_getLocation();" />(getLocation:点击反地址解析后,点击地图返回地址。)</br>
<h2>2、智能搜索Localsearch</h2>
<input style="width:300px;" type="text" value="冀兴驾校" id="keyword_1" /><input value="智能搜索" type="button" onclick="fun_search();" />(search:在指定城市或全国内搜索关键词。)</br>
<input style="width:300px;" type="text" value="肯德基" id="keyword_2" /><input value="视野内搜索" type="button" onclick="fun_searchInBounds();" />(searchInBound:在可视范围内搜索关键词内容)</br>
<input style="width:100px;" type="text" value="银行" id="keyword_3_keywords" /><input style="width:75px;" type="text" value="116.381452" id="keyword_3_center_x" /><input style="width:75px;" type="text" value="39.914446" id="keyword_3_center_y" /><input style="width:50px;" type="text" value="500" id="keyword_3_radius" /><input value="周边搜索" type="button" onclick="fun_searchNearby();" />(searchNearby:中心点为字符串时,将自动忽略半径)</br>
<div style="clear:both;margin:10px 0 0;"></div>
<div style="width:520px;height:340px;border:1px solid gray;float:left;" id="container"></div>
<div style="width:300px;height:340px;float:left;" id="results"></div>
<div style="clear:both;"></div>
<input type="button" onclick="map.clearOverlays();myLocalsearch.clearResults();" style="margin:10px 0 0;height:50px;width:100px;" value="洗刷地图" /> (清除地图上的覆盖物和检索结果)
</body>
</html>
<script type="text/javascript">
//以下两句话用来创建地图
var map = new BMap.Map("container"); //创建地图容器
map.centerAndZoom("北京市",12); //初始化地图。设置中心点和地图级别

//添加鱼骨控件
map.addControl(new BMap.NavigationControl());

//获取各个id的value
/*

var value_address_1 = document.getElementById("address_1").value;
var value_keyword_1 = document.getElementById("keyword_1").value;
var value_keyword_2 = document.getElementById("keyword_2").value;
var value_keyword_3_keywords = document.getElementById("keyword_3_keywords").value;
var value_keyword_3_center_x = document.getElementById("keyword_3_center_x").value;
var value_keyword_3_center_y = document.getElementById("keyword_3_center_y").value;
var value_keyword_3_radius = document.getElementById("keyword_3_radius").value;
*/


//创建地址解析的实例
var myGeo = new BMap.Geocoder();
//地址解析的函数
function fun_geocoder_getPoint(){
var value_address_1 = document.getElementById("address_1").value;
myGeo.getPoint(value_address_1,
function(point){
if (point) {
map.centerAndZoom(point,
15);
map.addOverlay(
new BMap.Marker(point));
}
},
"全国");
}
//反地址解析的函数
function fun_geocoder_getLocation(){
map.addEventListener(
"click", function(e){
var pt = e.point;
myGeo.getLocation(pt,
function(rs){
var addComp = rs.addressComponents;
document.getElementById(
"address_2").innerHTML = addComp.province + addComp.city + addComp.district + addComp.street + addComp.streetNumber;
});
});
}

//智能搜索Localsearch类
var options = {renderOptions: {map: map, panel: "results"}};
var myLocalsearch = new BMap.LocalSearch(map,options);
//模糊查询search方法
function fun_search(){
var value_keyword_1 = document.getElementById("keyword_1").value;
myLocalsearch.search(value_keyword_1);
}
//视野内搜索searchInBounds方法
function fun_searchInBounds(){
var value_keyword_2 = document.getElementById("keyword_2").value;
myLocalsearch.searchInBounds(value_keyword_2, map.getBounds());
}
//周边搜索fun_searchNearby方法
function fun_searchNearby(){
var value_keyword_3_keywords = document.getElementById("keyword_3_keywords").value;
var value_keyword_3_center_x = document.getElementById("keyword_3_center_x").value;
var value_keyword_3_center_y = document.getElementById("keyword_3_center_y").value;
var value_keyword_3_radius = document.getElementById("keyword_3_radius").value;
myLocalsearch.searchNearby(value_keyword_3_keywords,
new BMap.Point(value_keyword_3_center_x,value_keyword_3_center_y),value_keyword_3_radius);
}
</script>



目录
相关文章
|
21天前
|
监控 前端开发 JavaScript
实战篇:商品API接口在跨平台销售中的有效运用与案例解析
随着电子商务的蓬勃发展,企业为了扩大市场覆盖面,经常需要在多个在线平台上展示和销售产品。然而,手工管理多个平台的库存、价格、商品描述等信息既耗时又容易出错。商品API接口在这一背景下显得尤为重要,它能够帮助企业在不同的销售平台之间实现商品信息的高效同步和管理。本文将通过具体的淘宝API接口使用案例,展示如何在跨平台销售中有效利用商品API接口,以及如何通过代码实现数据的统一管理。
|
28天前
|
API 数据库 C语言
【C/C++ 数据库 sqlite3】SQLite C语言API返回值深入解析
【C/C++ 数据库 sqlite3】SQLite C语言API返回值深入解析
167 0
|
1月前
|
缓存 API 定位技术
使用Python调用百度地图API实现地址查询
使用Python调用百度地图API实现地址查询
100 0
|
1月前
|
小程序 前端开发 JavaScript
视觉智能平台常见问题之抠人脸的api如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
29 3
|
6天前
|
机器学习/深度学习 API TensorFlow
TensorFlow的高级API:tf.keras深度解析
【4月更文挑战第17天】本文深入解析了TensorFlow的高级API `tf.keras`,包括顺序模型和函数式API的模型构建,以及模型编译、训练、评估和预测的步骤。`tf.keras`结合了Keras的易用性和TensorFlow的性能,支持回调函数、模型保存与加载等高级特性,助力提升深度学习开发效率。
|
14天前
|
JavaScript API UED
Vue3.0新特性解析与实战:Composition API、Teleport与Suspense
【4月更文挑战第6天】Vue3.0引入了颠覆性的Composition API,通过函数式方法提升代码可读性和复用性,例如`setup()`、`ref`等,便于逻辑模块化。实战中,自定义的`useUser`函数可在多个组件中共享用户信息逻辑。另外,Teleport允许组件渲染到DOM特定位置,解决模态框等场景的上下文问题。再者,Suspense提供异步组件加载的延迟渲染,使用fallback内容改善用户体验。这些新特性显著优化了开发和性能,适应现代Web需求。
17 0
|
1月前
|
机器学习/深度学习 API 计算机视觉
视觉智能平台常见问题之获取人脸皮肤的颜色Api如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
18 0
|
1月前
|
自然语言处理 API 语音技术
Python加百度语音API实现文字转语音功能
Python加百度语音API实现文字转语音功能
52 0
|
2月前
|
存储 Oracle Java
Java 包和 API 深度解析:组织代码,避免命名冲突
Java 中的包 用于将相关的类分组在一起。可以将其视为文件目录中的一个文件夹。我们使用包来避免名称冲突,并编写更易于维护的代码。 包分为两类: 内置包(来自 Java API 的包) 用户定义的包(创建自己的包)
309 2
|
2月前
|
数据挖掘 API 数据处理
获取商品详情信息API接口:1688开放平台功能解析
首先,要获取商品详情信息,开发者需要向1688开放平台申请相应的权限,并遵循其调用规则。在调用商品详情信息API接口时,需要传入相应的请求参数,如商品ID、调用时间戳、密钥等。这些参数对于确保接口的正常运行至关重要。

推荐镜像

更多