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
| import {
| MAP_ID
| } from '../constants'
|
| import {
| invoke
| } from '../../bridge'
|
| import {
| ANI_DURATION
| } from '../../constants'
|
| import {
| registerPlusMessage,
| consumePlusMessage
| } from '../../framework/plus-message'
|
| const CHOOSE_LOCATION_PATH = '_www/__uniappchooselocation.html'
|
| const MESSAGE_TYPE = 'chooseLocation'
|
| export function chooseLocation (params, callbackId) {
| const statusBarStyle = plus.navigator.getStatusBarStyle()
| const webview = plus.webview.create(
| CHOOSE_LOCATION_PATH,
| MAP_ID, {
| titleNView: {
| autoBackButton: true,
| backgroundColor: '#000000',
| titleColor: '#ffffff',
| titleText: '选择位置',
| titleSize: '17px',
| buttons: [{
| float: 'right',
| text: '完成',
| fontSize: '17px',
| width: '60px',
| onclick: function () {
| webview.evalJS('__chooseLocationConfirm__()')
| }
| }]
| },
| popGesture: 'close',
| scrollIndicator: 'none'
| }, {
| __uniapp_type: 'map',
| __uniapp_statusbar_style: statusBarStyle,
| 'uni-app': 'none'
| }
| )
| if (statusBarStyle === 'dark') {
| plus.navigator.setStatusBarStyle('light')
| webview.addEventListener('popGesture', ({
| type,
| result
| }) => {
| if (type === 'start') {
| plus.navigator.setStatusBarStyle('dark')
| } else if (type === 'end' && !result) {
| plus.navigator.setStatusBarStyle('light')
| }
| })
| }
| let index = 0
| const onShow = function () {
| index++
| if (index === 2) {
| webview.evalJS(`__chooseLocation__(${JSON.stringify(params)})`)
| }
| }
| webview.addEventListener('loaded', onShow)
| webview.show('slide-in-bottom', ANI_DURATION, onShow)
|
| let result
|
| webview.addEventListener('close', () => {
| if (result) {
| invoke(callbackId, {
| name: result.poiname,
| address: result.poiaddress,
| latitude: result.latlng.lat,
| longitude: result.latlng.lng,
| errMsg: 'chooseLocation:ok'
| })
| } else {
| consumePlusMessage(MESSAGE_TYPE)
| invoke(callbackId, {
| errMsg: 'chooseLocation:fail cancel'
| })
| }
| })
|
| registerPlusMessage(MESSAGE_TYPE, function (res) {
| if (res && 'latlng' in res) {
| result = res
| }
| }, false)
| }
|
|