微信小程序城市定位的实现

这篇文章给大家认真介绍了微信小程序城市定位的实现实例,主要实现了获取当前所在国家城市信息的相关资料,文中介绍的非常详细,相信对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。

前言

在微信小程序编程网点我wcqh.cn中,我们可以通过调用wx.getLocation()获取到设备当前的地理位置信息,这个信息是当前位置的经纬度。如果我们想获取当前位置是处于哪个国家,哪个城市等信息,该如何实现呢?

实现方法

微信小程序中并编程网点我wcqh.cn没有提供这样的API,但是没关系,有wx.getLocation()得到的经纬度作为基础就够了,其他的,我们可以使用其他第三方地图服务可以来实现,比如腾讯地图或百度地图的API。

以腾讯地图为例,我们可编程网点我wcqh.cn以去腾讯地图开放平台注册一个账号,然后在它的管理后台创建一个密钥(key)。

然后在顶部菜单里面,可以找到WebServiceAPI菜单:

腾讯地图WebServiceAPI

腾讯地图提供了很多WebSer编程网点我wcqh.cnviceAPI,比如按照地址获取经纬度,根据经纬度找地址,我们将要用到的就是根据经纬度找地址,也称作“逆地址解析”:

逆地址解析

逆地址解析提供由坐标到坐标所在位置的文字描述的转换,调用形式就是一个HTT编程网点我wcqh.cnP URL形式的API,基本用法如下:

1

http://apis.map.qq.com/ws/geocoder/v1/?location=39.984154,116.307490&key=OB4BZ-D编程网点我wcqh.cn4W3U-B7VVO-4PJWW-6TKDJ-WPB77

登录后复制

这个URL的基本参数就是一个经纬度坐标地址。你可以将这个URL中的key换成你自己的key,直接在浏览器中查看,就能看到类似这样的结果编程网点我wcqh.cn,还可以根据传入不同的参数选项,得到更丰富的信息:

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编程网点我wcqh.cn

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编程网点我wcqh.cn

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

{

“status”: 0,

“message”: “q编程网点我wcqh.cnuery ok”,

“request_id”: “6225548022856589453”,

“result”: {

“location”: {

“lat”: 39.984154,

“lng”: 116.307编程网点我wcqh.cn49

},

“address”: “北京市海淀区北四环西路66号彩和坊路”,

“formatted_addresses”: {

“recommend”: “海淀区中关村彩和坊路中国技术交易大厦”,

“rough编程网点我wcqh.cn“: “海淀区中关村彩和坊路中国技术交易大厦”

},

“address_component”: {

“nation”: “中国”,

“province”: “北京市”,

“city”: “北京市”,

“distr编程网点我wcqh.cnict”: “海淀区”,

“street”: “彩和坊路”,

“street_number”: “北四环西路66号”

},

“ad_info”: {

“adcode”: “110108”,

“name”: “中国编程网点我wcqh.cn,北京市,北京市,海淀区”,

“location”: {

“lat”: 39.984154,

“lng”: 116.307487

},

“nation”: “中国”,

“province”: “北京市”,

“cit编程网点我wcqh.cny”: “北京市”,

“district”: “海淀区”

},

“address_reference”: {

“business_area”: {

“title”: “中关村”,

“location”: {

“la编程网点我wcqh.cnt”: 39.984058,

“lng”: 116.307518

},

“_distance”: 0,

“_dir_desc”: “内”

},

“famous_area”: {

“title”: “中关村”,

“lo编程网点我wcqh.cncation”: {

“lat”: 39.984058,

“lng”: 116.307518

},

“_distance”: 0,

“_dir_desc”: “内”

},

“crossroad”: {

“title”编程网点我wcqh.cn: “彩和坊路/北四环西路辅路(路口)”,

“location”: {

“lat”: 39.985001,

“lng”: 116.308113

},

“_distance”: 104.2,

“_dir_desc”编程网点我wcqh.cn: “西南”

},

“village”: {

“title”: “稻香园北社区”,

“location”: {

“lat”: 39.983269,

“lng”: 116.301979

},

“_distance”: 编程网点我wcqh.cn480.1,

“_dir_desc”: “东”

},

“town”: {

“title”: “海淀街道”,

“location”: {

“lat”: 39.984154,

“lng”: 116.307487

},

“_编程网点我wcqh.cndistance”: 0,

“_dir_desc”: “内”

},

“street_number”: {

“title”: “北四环西路66号”,

“location”: {

“lat”: 39.984119,

编程网点我wcqh.cnlng”: 116.307503

},

“_distance”: 6.9,

“_dir_desc”: “”

},

“street”: {

“title”: “彩和坊路”,

“location”: {

“lat”: 3编程网点我wcqh.cn9.984154,

“lng”: 116.308098

},

“_distance”: 49.1,

“_dir_desc”: “西”

},

“landmark_l1”: {

“title”: “北京中关村创业大街”编程网点我wcqh.cn,

“location”: {

“lat”: 39.984055,

“lng”: 116.306992

},

“_distance”: 43.9,

“_dir_desc”: “东”

},

“landmark_l2”:编程网点我wcqh.cn {

“title”: “中国技术交易大厦”,

“location”: {

“lat”: 39.984154,

“lng”: 116.307487

},

“_distance”: 0,

“_dir_desc”: “编程网点我wcqh.cn内”

}

}

}

}

登录后复制

从这个API的返回结果中,我们可以看到它包含了我们想要的地址信息,如国家,城市,区等。

接下来,我们要在我们的代码中调用这个API。该API可以通过JSONP的方式调用,也可以在服编程网点我wcqh.cn务器端发起调用。我是在我自己的服务端中调用的,下面是我的代码,使用Node.js Express实现的,仅供参考:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

// 服务调用地址:编程网点我wcqh.cnhttp://localhost:3000/lbs/location

router.get('/lbs/location', function (req, res, next) {

let编程网点我wcqh.cn lat = req.query.latitude

let lng = req.query.longitude

request.get({

uri: 'https://apis.map.qq.com编程网点我wcqh.cn/ws/geocoder/v1/',

json: true,

qs: {

location: `${lat},${lng}`,

key: '你的腾讯地图密钥key'

}

}, (err, 编程网点我wcqh.cnresponse, data) => {

if (response.statusCode === 200) {

responseUtil.jsonSuccess(res, data)

} else {

res编程网点我wcqh.cnponseUtil.jsonError(res, 10001, '')

}

})

})

登录后复制

然后,可以看一下在小程序端的Page代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

1编程网点我wcqh.cn8

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

Page({

data: {

address: {}

},

onLoad: function () {

//获取当前经纬度信息

wx.ge编程网点我wcqh.cntLocation({

success: ({latitude, longitude}) => {

//调用后台API,获取地址信息

wx.request({

url: 'http://localho编程网点我wcqh.cnst:3000/lbs/location',

data: {

latitude: latitude,

longitude: longitude

},

success: (res) => {

let inf编程网点我wcqh.cno = res.data.data.result.ad_info

this.setData({ address: info })

},

fail: () => {

},

complete: () => {

}

})编程网点我wcqh.cn

}

})

}

})

登录后复制

以及一个简单的小程序界面,用于显示这些地址信息:

1

2

3

4

5

<view>

<view>{{address.nation}}</view>

<view>{{address.city}}<编程网点我wcqh.cn/view>

<view>{{address.district}}</view>

</view>

登录后复制

运行结果如下所示:

运行结果

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PH编程网点我wcqh.cnP中文网!

相关推荐:

如何通过微信小程序实现获取自己所处位置的经纬度坐标的功能

微信小程序三级联动选择器的使用方法

以上就是微信小程序城市定位的实现的详细内容,更多请关注php中文网其它相关文章!

© 版权声明
THE END
喜欢就支持一下吧
点赞177 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容