了解如何使用地理编码服务查找某个位置附近的地址。
反向地理编码是将位置转换为地址或地点的过程。要反向地理编码,您可以使用地理编码服务和 reverseGeocode
操作。此操作需要一个初始位置,并返回一个具有地名和位置等属性的地址。为了简化访问地理编码服务,可以使用 locator
模块。
在本教程中,您将使用 locator
进行反向地理编码,并在地图上查找最接近您所单击位置处的地址。
步骤
创建新 Pen
- 要开始使用,请完成显示地图教程 或 使用此 Pen。
添加模块
在 require
语句中,添加 locator
模块。
GeoScene Maps SDK for JavaScript 提供有 AMD 模块和 ES 模块,但本教程基于 AMD。AMD require
函数使用引用来确定加载哪些模块 - 例如,您可以指定 "geoscene/Map"
来加载 Map 模块。加载模块后,它们将作为参数 (例如,Map
) 传递给回调函数,以便在应用程序中使用。保持模块引用和回调参数的顺序相同是很重要的。有关不同类型模块的更多信息,请访问工具指南主题。
添加行。更改行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
require([
"geoscene/config",
"geoscene/Map",
"geoscene/views/MapView",
"geoscene/rest/locator"
], function(geosceneConfig, Map, MapView, locator) {
定义服务 url
使用 locator
模块访问地理编码服务和 reverseGeocode
操作。
定义一个变量 serviceUrl
以引用地理编码服务。
添加行。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
const view = new MapView({
container: "viewDiv",
map: map,
center: [115,38],
zoom: 4
});
const serviceUrl = "https://www.geosceneonline.cn/geocode/rest/GeoScene/GeocodeServer";
反向地理编码
使用处理程序捕获地图上的点击位置,然后调用地理编码服务。如果找到地址,则服务返回该地址;如果未找到结果,则返回错误。在弹出窗口中使用纬度、经度和地址显示结果。
在主函数中,将 click
处理器添加至视图。创建 params
并将 location
设置为 evt.mapPoint
。
添加行。添加行。添加行。添加行。添加行。添加行。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
const serviceUrl = "https://www.geosceneonline.cn/geocode/rest/GeoScene/GeocodeServer";
view.on("click", function(evt){
const params = {
location: evt.mapPoint
};
});
创建 showAddress
函数以显示坐标和对应的地址。
添加行。添加行。添加行。添加行。添加行。添加行。添加行。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
view.on("click", function(evt){
const params = {
location: evt.mapPoint
};
});
function showAddress(address, pt) {
view.popup.open({
title: + Math.round(pt.longitude * 100000)/100000 + ", " + Math.round(pt.latitude * 100000)/100000,
content: address,
location: pt
});
}
更新 click
处理程序以调用 locationToAddress
,以便对 mapPoint
进行反向地理编码。使用 showAddress
函数显示结果的弹出窗口。
添加行。添加行。添加行。添加行。添加行。添加行。添加行。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
view.on("click", function(evt){
const params = {
location: evt.mapPoint
};
locator.locationToAddress(serviceUrl, params)
.then(function(response) { // Show the address found
const address = response.address;
showAddress(address, evt.mapPoint);
}, function(err) { // Show no address found
showAddress("No address found.", evt.mapPoint);
});
});
运行应用程序
在 CodePen 中,运行代码以显示地图。
单击地图以对位置进行反向地理编码,并返回具有最近地址的弹出窗口。
下一步是什么?
要了解如何使用其他 API 功能,请参阅以下教程: