【百度地图API】建立全国银行位置查询系统(四)——如何利用百度地图的数据生成自己的标注

简介: 原文:【百度地图API】建立全国银行位置查询系统(四)——如何利用百度地图的数据生成自己的标注摘要:   上一章留个悬念,"如果自己没有地理坐标的数据库,应该怎样制作银行的分布地图呢?"   答案就是,利用百度地图上的数据。
原文: 【百度地图API】建立全国银行位置查询系统(四)——如何利用百度地图的数据生成自己的标注

摘要:

  上一章留个悬念,"如果自己没有地理坐标的数据库,应该怎样制作银行的分布地图呢?"

  答案就是,利用百度地图上的数据。

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

我们不用花大把时间写代码去跑数据,只需要利用百度地图API提供的免费接口,就可以快速完成这一功能。

img_abd518be5ec5c028203e731255ac8509.jpg

查看示例,请点击这里。

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

一、建立不同的查询按钮

  还是以招商银行,中国银行和建设银行三个为例,建立三个不同的查询按钮。我想用最直观的展现方式来教学,所以使用了三个按钮。当然,你也可以建立一个下拉列表,或者一个输入框来传参数。html代码如下:

< input type ="button" onclick ="milk_zs();" value ="招商银行" />
< input type ="button" onclick ="milk_zg();" value ="中国银行" />
< input type ="button" onclick ="milk_js();" value ="建设银行" />

  针对这三个按钮,写三个不同的查询。

function milk_zs(){
local.search(
' 招商银行 ' );
}
function milk_zg(){
local.search(
' 中国银行 ' );
}
function milk_js(){
local.search(
' 建设银行 ' );
}

  如何定义三个不同的标注,在上一章已经讲过了,我这里就不重复了。下面进入重点部分!!

二、利用百度地图数据库

  由于我们要将从百度地图查询出来的数据,显示成自己定义的标注,那么就需要使用到回调函数。经过查询,LocalSearch的回调函数是searchComplete。用法如下:

var local = new BMap.LocalSearch(map,{onSearchComplete: searchComplete}); // 构造一个查询

  接下来,我们要将在回调函数里进行操作。遍历所有查询到的坐标点,读一个获取的点,就自己添加一个自定义标注。读点,使用的是getCurrentNumPois接口。

// 查询完毕的回调函数
var searchComplete = function (results){
if (local.getStatus() != BMAP_STATUS_SUCCESS){
return ;
}
for ( var cnt = 0 ; cnt < results.getCurrentNumPois(); cnt ++ ){
var point = results.getPoi(cnt);
addMarker(results,point, cnt);
}
}

  为了让代码看上去更加清晰,我把添加自定义标注的代码提取出来,单独写成一个函数addMarker。在这里,需要针对不同的查询,显示不同的标注图案。所以,需要判断一下关键词。

var myIcon = "" ;
if (results.keyword == " 招商银行 " ){
myIcon
= zsIcon;
}
else if (results.keyword == " 中国银行 " ){
myIcon
= zgIcon;
}
else if (results.keyword == " 建设银行 " ){
myIcon
= jsIcon;
}
else {
myIcon
= zsIcon;
}
var marker = new BMap.Marker(point.point, {icon: myIcon});
map.addOverlay(marker);

三、细节完善

  为了便于观察结果和更好的用户体验,需要在第二次查询时,清除上一次查询的结果。

map.clearOverlays(); // 清除地图上覆盖物

  点击marker需要弹出infowindow,这里要设置一下。以前写过这个点,这里就不多说了。

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

运行代码,请点击这里。

最后,贴出全部源代码,供大家下载。

< html >
< head >
< meta http-equiv ="Content-Type" content ="text/html; charset=gb2312" />
< title > 三家银行搜索 </ title >
< script type ="text/javascript" src ="http://api.map.baidu.com/api?key=46ce9d0614bf7aefe0ba562f8cf87194&v=1.1&services=true" >
</ script >
</ head >
< body >
< div style ="width:520px;height:340px;border:1px solid gray" id ="container" ></ div >
< input type ="button" onclick ="milk_zs();" value ="招商银行" />
< input type ="button" onclick ="milk_zg();" value ="中国银行" />
< input type ="button" onclick ="milk_js();" value ="建设银行" />
</ body >
</ html >
< script type ="text/javascript" >
// 查询完毕添加自定义标注
function addMarker(results,point, index){
// 创建招商银行的标注图标
var zsIcon = new BMap.Icon( " http://ui-love.com/baidumap/bank/marker.gif " , // 图片地址
new BMap.Size( 40 , 64 ), // 标注显示大小
{
offset:
new BMap.Size( 20 , 64 ), // 标注底部小尖尖的偏移量
imageOffset: new BMap.Size( 0 , 0 ) // 这里相当于CSS sprites
});
// 创建中国银行的标注图标
var zgIcon = new BMap.Icon( " http://ui-love.com/baidumap/bank/marker.gif " , // 图片地址
new BMap.Size( 40 , 64 ), // 标注显示大小
{
offset:
new BMap.Size( 20 , 64 ), // 标注底部小尖尖的偏移量
imageOffset: new BMap.Size( 0 , - 64 ) // 这里相当于CSS sprites
});
// 创建建设银行的标注图标
var jsIcon = new BMap.Icon( " http://ui-love.com/baidumap/bank/marker.gif " , // 图片地址
new BMap.Size( 40 , 64 ), // 标注显示大小
{
offset:
new BMap.Size( 20 , 64 ), // 标注底部小尖尖的偏移量
imageOffset: new BMap.Size( 0 , - 128 ) // 这里相当于CSS sprites
});
var myIcon = "" ;
if (results.keyword == " 招商银行 " ){
myIcon
= zsIcon;
}
else if (results.keyword == " 中国银行 " ){
myIcon
= zgIcon;
}
else if (results.keyword == " 建设银行 " ){
myIcon
= jsIcon;
}
else {
myIcon
= zsIcon;
}
var marker = new BMap.Marker(point.point, {icon: myIcon});

var infoWindow = new BMap.InfoWindow(point.title); // 创建信息窗口对象
marker.addEventListener( " click " ,
function (){
marker.openInfoWindow(infoWindow);
}
);
map.addOverlay(marker);
}

// 查询完毕的回调函数
var searchComplete = function (results){
if (local.getStatus() != BMAP_STATUS_SUCCESS){
return ;
}
for ( var cnt = 0 ; cnt < results.getCurrentNumPois(); cnt ++ ){
var point = results.getPoi(cnt);
addMarker(results,point, cnt);
}
}

var map = new BMap.Map( " container " ); // 创建地图容器
map.centerAndZoom( new BMap.Point( 116.404 , 39.915 ), 11 ); // 初始化地图
var local = new BMap.LocalSearch(map,{onSearchComplete: searchComplete}); // 构造一个查询

// 定义三个不同的查询
function milk_zs(){
map.clearOverlays();
local.search(
' 招商银行 ' );
}
function milk_zg(){
map.clearOverlays();
local.search(
' 中国银行 ' );
}
function milk_js(){
map.clearOverlays();
local.search(
' 建设银行 ' );
}
</ script >
目录
相关文章
|
JSON 缓存 算法
如何通过API获取1688商品类目数据:技术实现指南
1688开放平台提供alibaba.category.get接口,支持获取全量商品类目树。RESTful架构,返回JSON数据,含类目ID、名称、层级等信息。需注册账号、创建应用并授权。请求需签名认证,QPS限10次,建议缓存更新周期≥24小时。
1128 2
|
JSON 安全 API
亚马逊商品列表API秘籍!轻松获取商品列表数据
亚马逊商品列表API(SP-API)提供标准化接口,支持通过关键词、分类、价格等条件搜索商品,获取ASIN、价格、销量等信息。采用OAuth 2.0认证与AWS签名,保障安全。数据以JSON格式传输,便于开发者批量获取与分析。
|
JSON 监控 API
小红书笔记评论API:一键获取分层评论与用户互动数据
小红书笔记评论API可获取指定笔记的评论详情,包括内容、点赞数、评论者信息等,支持分页与身份认证,返回JSON格式数据,适用于舆情监控、用户行为分析等场景。
1574 1
|
JSON API 数据格式
淘宝拍立淘按图搜索API系列,json数据返回
淘宝拍立淘按图搜索API系列通过图像识别技术实现商品搜索功能,调用后返回的JSON数据包含商品标题、图片链接、价格、销量、相似度评分等核心字段,支持分页和详细商品信息展示。以下是该API接口返回的JSON数据示例及详细解析:
|
自然语言处理 监控 API
速卖通商品详情API秘籍!轻松获取SKU属性数据
速卖通商品详情API(aliexpress.item.get)支持通过编程获取商品标题、价格、SKU、库存、销量、物流模板、评价及店铺信息,适用于价格监控、选品分析等场景。接口支持多语言返回,采用AppKey+AppSecret+Token认证,需签名验证,确保安全调用。
|
XML JSON API
苏宁商品详情API秘籍!轻松获取商品详情数据
苏宁商品详情API基于RESTful架构,支持JSON/XML格式,通过AppKey、AppSecret与签名三重认证,结合OAuth 2.0实现安全调用。开发者可获取商品名称、价格、销量、库存、促销等实时数据,适用于电商分析与商业智能。接口强制使用HTTPS协议,支持POST/GET请求,统一采用UTF-8编码,确保数据传输安全可靠。
1007 1
|
安全 API
亚马逊商品详情 API 秘籍!轻松获取 SKU 属性数据
亚马逊商品详情API是官方接口,通过ASIN获取商品标题、价格、库存、评价等50余项数据,支持多站点查询。包含Product Advertising API与MWS两类,分别用于商品信息获取和卖家店铺管理,采用AWS4-HMAC-SHA256认证,保障请求安全。
|
缓存 监控 前端开发
顺企网 API 开发实战:搜索 / 详情接口从 0 到 1 落地(附 Elasticsearch 优化 + 错误速查)
企业API开发常陷参数、缓存、错误处理三大坑?本指南拆解顺企网双接口全流程,涵盖搜索优化、签名验证、限流应对,附可复用代码与错误速查表,助你2小时高效搞定开发,提升响应速度与稳定性。
|
数据可视化 测试技术 API
从接口性能到稳定性:这些API调试工具,让你的开发过程事半功倍
在软件开发中,接口调试与测试对接口性能、稳定性、准确性及团队协作至关重要。随着开发节奏加快,传统方式已难满足需求,专业API工具成为首选。本文介绍了Apifox、Postman、YApi、SoapUI、JMeter、Swagger等主流工具,对比其功能与适用场景,并推荐Apifox作为集成度高、支持中文、可视化强的一体化解决方案,助力提升API开发与测试效率。
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南