# 一、申请百度地图的 ak(略)
# 二、引入百度地图

先插入代码,分块讲解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<th:block th:include="include :: header('服务网点管理修改')"/>
<script type="text/javascript"
src="http://api.map.baidu.com/api?v=2.0&ak=自己申请"></script>
<!--百度地图key要自己注册,或者用1.4以下的版本(不需要key)-->

</head>
<body>
<form class="layui-form" action="" th:object="${ServiceNetwork}">
<div class="mainBox">
<div class="main-container">
<div class="main-container">

<div class="layui-form-item" style="display:none;">
<label class="layui-form-label">id</label>
<div class="layui-input-block">
<input th:value="*{id}" type="text" name="id" autocomplete="off" placeholder="电站编号"
class="layui-input">
</div>
</div>


<div class="layui-form-item">
<label class="layui-form-label">服务网点名称</label>
<div class="layui-input-block">
<input th:value="*{serviceName}" type="text" name="serviceName" autocomplete="off"
placeholder="服务网点名称" class="layui-input">
</div>
</div>


<div class="layui-form-item">
<label class="layui-form-label">服务网点地址</label>
<div class="layui-input-block">
<div style="width:697px;height:550px;border:#ccc solid 1px;" id="dituContent"></div>

<input th:value="*{serviceAddress}" type="text" name="serviceAddress" autocomplete="off"
placeholder="服务网点地址" class="layui-input">
</div>
</div>


<div class="layui-form-item">
<label class="layui-form-label">营业时间</label>
<div class="layui-input-block">
<input th:value="*{businessHours}" type="text" name="businessHours" autocomplete="off"
placeholder="营业时间" class="layui-input">
</div>
</div>


<div class="layui-form-item">
<label class="layui-form-label">营运状态 </label>
<div class="layui-input-block">

<select th:field="*{operatingStatus}" name="operatingStatus" id="operatingStatus"
th:with="type=${@dict.getType('operating_status')}">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}"
th:value="${dict.dictValue}"></option>
</select>
</div>
</div>


<div class="layui-form-item">
<label class="layui-form-label">服务网点状态</label>
<div class="layui-input-block">
<select th:field="*{serviceStatus}" name="serviceStatus" id="serviceStatus"
th:with="type=${@dict.getType('serviceStatus')}">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}"
th:value="${dict.dictValue}"></option>
</select>
</div>
</div>


<div class="layui-form-item">
<label class="layui-form-label">电柜容量</label>
<div class="layui-input-block">
<input th:value="*{electricCabinetCapacity}" type="text" name="electricCabinetCapacity"
autocomplete="off" placeholder="电柜容量" class="layui-input">
</div>
</div>


<div class="layui-form-item">
<label class="layui-form-label">电柜数量</label>
<div class="layui-input-block">
<input th:value="*{numberElectricCabinets}" type="text" name="numberElectricCabinets"
autocomplete="off" placeholder="电柜数量" class="layui-input">
</div>
</div>


<div class="layui-form-item">
<label class="layui-form-label">电池数据</label>
<div class="layui-input-block">
<input th:value="*{batteryData}" type="text" name="batteryData" autocomplete="off"
placeholder="电池数据" class="layui-input">
</div>
</div>


</div>
</div>
</div>
<div class="bottom">
<div class="button-container">
<button type="submit" class="layui-btn layui-btn-normal layui-btn-sm" lay-submit=""
lay-filter="serviceNetwork-update">
<i class="layui-icon layui-icon-ok"></i>
提交
</button>
<button type="reset" class="layui-btn layui-btn-primary layui-btn-sm">
<i class="layui-icon layui-icon-refresh"></i>
重置
</button>
</div>
</div>
</form>
<th:block th:include="include :: footer"/>
<script type="text/javascript">
//创建和初始化地图函数:
function initMap() {
createMap();//创建地图
setMapEvent();//设置地图事件
addMapControl();//向地图添加控件
}

//创建地图函数:
function createMap() {
var map = new BMap.Map("dituContent");//在百度地图容器中创建一个地图
var point = new BMap.Point(106.61680, 29.57793);//定义一个中心点坐标(当前坐标重庆)
map.centerAndZoom(point, 12);//设定地图的中心点和坐标并将地图显示在地图容器中
window.map = map;//将map变量存储在全局
}

//地图事件设置函数:
function setMapEvent() {
map.enableDragging();//启用地图拖拽事件,默认启用(可不写)
map.enableScrollWheelZoom();//启用地图滚轮放大缩小
map.enableDoubleClickZoom();//启用鼠标双击放大,默认启用(可不写)
map.enableKeyboard();//启用键盘上下左右键移动地图
map.addEventListener('click', function (e) {
console.log(e)
var point = new BMap.Point(e.Ag.lng, e.Ag.lat);
var gc = new BMap.Geocoder();
gc.getLocation(point, function (rs) {
$("input[name='serviceAddress']").val(rs.address);
console.log(rs.address)
var opts = {
title: '行政区划归属',
width: 220,
height: 92
};
var infoStr = '<div>省:' + rs.addressComponents.province + '</div>'
+ '<div>市:' + rs.addressComponents.city + '</div>'
+ '<div>区:' + rs.addressComponents.district + '</div>';
var infoWindow = new BMap.InfoWindow(infoStr, opts);
map.openInfoWindow(infoWindow, point);

});
});
}

//地图控件添加函数:
function addMapControl() {
//向地图中添加缩放控件
var ctrl_nav = new BMap.NavigationControl({anchor: BMAP_ANCHOR_TOP_LEFT, type: BMAP_NAVIGATION_CONTROL_LARGE});
map.addControl(ctrl_nav);
//向地图中添加缩略图控件
var ctrl_ove = new BMap.OverviewMapControl({anchor: BMAP_ANCHOR_BOTTOM_RIGHT, isOpen: 1});
map.addControl(ctrl_ove);
//向地图中添加比例尺控件
var ctrl_sca = new BMap.ScaleControl({anchor: BMAP_ANCHOR_BOTTOM_LEFT});
map.addControl(ctrl_sca);
}


initMap();//创建和初始化地图
</script>
<script>
layui.use(['form', 'laydate', 'jquery'], function () {
let form = layui.form;
let $ = layui.jquery;
let MODULE_PATH = rootPath + "/ServiceNetworkController";


form.on('submit(serviceNetwork-update)', function (data) {
let loader = layer.load();
$.ajax({
url: MODULE_PATH + '/edit',
data: data.field,
dataType: 'json',
contentType: 'application/x-www-form-urlencoded',
type: 'post',
success: function (result) {
if (result.code == 200) {
layer.msg(result.msg, {icon: 1, time: 1000}, function () {
parent.layer.close(parent.layer.getFrameIndex(window.name));//关闭当前页
parent.layui.table.reload("serviceNetwork-table");
layer.close(loader);
});
} else {
layer.msg(result.msg, {icon: 2, time: 1000});
layer.close(loader);
}
}
})
return false;
});
})
</script>
</body>
</html>
# 1. 引入地图 (ak 需要自己申请)
1
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=ak需要自己申请"></script>
# 2. 将地图 div 放置在合适的地方
1
2
3
4
5
6
7
8
9
<div class="layui-form-item">
<label class="layui-form-label">服务网点地址</label>
<div class="layui-input-block">
<div style="width:697px;height:550px;border:#ccc solid 1px;" id="dituContent"></div>

<input th:value="*{serviceAddress}" type="text" name="serviceAddress" autocomplete="off"
placeholder="服务网点地址" class="layui-input">
</div>
</div>

3. 设置地图相关函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<script type="text/javascript">
//创建和初始化地图函数:
function initMap() {
createMap();//创建地图
setMapEvent();//设置地图事件
addMapControl();//向地图添加控件
}

//创建地图函数:
function createMap() {
var map = new BMap.Map("dituContent");//在百度地图容器中创建一个地图
var point = new BMap.Point(106.61680, 29.57793);//定义一个中心点坐标(当前坐标重庆)
map.centerAndZoom(point, 12);//设定地图的中心点和坐标并将地图显示在地图容器中
window.map = map;//将map变量存储在全局
}

//地图事件设置函数:
function setMapEvent() {
map.enableDragging();//启用地图拖拽事件,默认启用(可不写)
map.enableScrollWheelZoom();//启用地图滚轮放大缩小
map.enableDoubleClickZoom();//启用鼠标双击放大,默认启用(可不写)
map.enableKeyboard();//启用键盘上下左右键移动地图
map.addEventListener('click', function (e) {
console.log(e)
var point = new BMap.Point(e.Ag.lng, e.Ag.lat);
var gc = new BMap.Geocoder();
gc.getLocation(point, function (rs) {
$("input[name='serviceAddress']").val(rs.address);
console.log(rs.address)
var opts = {
title: '行政区划归属',
width: 220,
height: 92
};
var infoStr = '<div>省:' + rs.addressComponents.province + '</div>'
+ '<div>市:' + rs.addressComponents.city + '</div>'
+ '<div>区:' + rs.addressComponents.district + '</div>';
var infoWindow = new BMap.InfoWindow(infoStr, opts);
map.openInfoWindow(infoWindow, point);

});
});
}

//地图控件添加函数:
function addMapControl() {
//向地图中添加缩放控件
var ctrl_nav = new BMap.NavigationControl({anchor: BMAP_ANCHOR_TOP_LEFT, type: BMAP_NAVIGATION_CONTROL_LARGE});
map.addControl(ctrl_nav);
//向地图中添加缩略图控件
var ctrl_ove = new BMap.OverviewMapControl({anchor: BMAP_ANCHOR_BOTTOM_RIGHT, isOpen: 1});
map.addControl(ctrl_ove);
//向地图中添加比例尺控件
var ctrl_sca = new BMap.ScaleControl({anchor: BMAP_ANCHOR_BOTTOM_LEFT});
map.addControl(ctrl_sca);
}


initMap();//创建和初始化地图
</script>
# 三、地图函数

以下为点击并获取当前地址名称

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//地图事件设置函数:
function setMapEvent() {
map.enableDragging();//启用地图拖拽事件,默认启用(可不写)
map.enableScrollWheelZoom();//启用地图滚轮放大缩小
map.enableDoubleClickZoom();//启用鼠标双击放大,默认启用(可不写)
map.enableKeyboard();//启用键盘上下左右键移动地图
map.addEventListener('click', function (e) {
console.log(e)
var point = new BMap.Point(e.Ag.lng, e.Ag.lat);
var gc = new BMap.Geocoder();
gc.getLocation(point, function (rs) {
$("input[name='serviceAddress']").val(rs.address);
console.log(rs.address)
var opts = {
title: '行政区划归属',
width: 220,
height: 92
};
var infoStr = '<div>省:' + rs.addressComponents.province + '</div>'
+ '<div>市:' + rs.addressComponents.city + '</div>'
+ '<div>区:' + rs.addressComponents.district + '</div>';
var infoWindow = new BMap.InfoWindow(infoStr, opts);
map.openInfoWindow(infoWindow, point);

});
});
}

其中 $("input[name='serviceAddress']").val(rs.address); 赋值给 input 框

三、成果
20221116201128