博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【百度地图API】建立全国银行位置查询系统(四)——如何利用百度地图的数据生成自己的标注...
阅读量:7056 次
发布时间:2019-06-28

本文共 4457 字,大约阅读时间需要 14 分钟。

原文:

摘要:

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

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

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

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

2011041218171882.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
>

转载地址:http://rugol.baihongyu.com/

你可能感兴趣的文章
[Django学习]上传图片
查看>>
Python实现屏幕截图的两种方式
查看>>
重建索引:ALTER INDEX..REBUILD ONLINE vs ALTER INDEX..REBUILD
查看>>
mysql下载源码方法
查看>>
orocod_kdl学习(二):KDL Tree与机器人运动学
查看>>
Ubuntu 16.04下如何安装VMware-Workstation
查看>>
Python 入门教程
查看>>
Visual Studio快速调出异常设置
查看>>
064——VUE中vue-router之使用路由别名定制(alias)
查看>>
收藏好文章
查看>>
组播基本概念、IGMP、IGMP监听学习笔记
查看>>
React Refs
查看>>
深入理解net core中的依赖注入、Singleton、Scoped、Transient(一)
查看>>
homebrew osx下面最优秀的包管理工具
查看>>
进程和线程的差别与联系
查看>>
window.parent window.top window.parent.location.pathname 没权限
查看>>
当发现你的OpenStack虚拟机网络有问题,不妨先试一下这16个步骤
查看>>
Expo大作战(二十)--expo中的Release channels(不重要*)
查看>>
[javase学习笔记]-8.7 静态代码块
查看>>
TFLearn 在给定模型精度时候提前终止训练
查看>>