@dcloudio/uni-h5 2.0.0 → 2.0.1-32920211122002

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/dist/automator.js +1 -1
  2. package/dist/index.css +1 -1
  3. package/dist/index.umd.min.js +1 -1
  4. package/lib/apis.js +14 -4
  5. package/lib/h5/uni.automator.js +1 -1
  6. package/lib/modules.json +4 -1
  7. package/manifest.json +49 -0
  8. package/package.json +2 -3
  9. package/src/core/helpers/api.js +1 -1
  10. package/src/core/helpers/constants.js +1 -0
  11. package/src/core/helpers/i18n/en.json +4 -2
  12. package/src/core/helpers/i18n/es.json +4 -1
  13. package/src/core/helpers/i18n/fr.json +4 -1
  14. package/src/core/helpers/i18n/index.js +155 -4
  15. package/src/core/helpers/i18n/zh-Hans.json +4 -1
  16. package/src/core/helpers/i18n/zh-Hant.json +4 -1
  17. package/src/core/helpers/index.js +1 -1
  18. package/src/core/helpers/interceptor.js +19 -15
  19. package/src/core/helpers/promise.js +1 -1
  20. package/src/core/helpers/protocol/device/set-clipboard-data.js +11 -2
  21. package/src/core/helpers/protocol/network/request.js +14 -1
  22. package/src/core/helpers/protocol/network/upload-file.js +1 -1
  23. package/src/core/helpers/protocol/ui/popup.js +2 -2
  24. package/src/core/runtime/base.js +2 -0
  25. package/src/core/runtime/locale.js +37 -0
  26. package/src/core/runtime/web-view/index.js +4 -0
  27. package/src/core/runtime/wrapper/create-subpackage-app.js +7 -6
  28. package/src/core/runtime/wrapper/util.js +6 -1
  29. package/src/core/service/api/base/interceptor.js +1 -1
  30. package/src/core/service/api/context/canvas.js +3 -2
  31. package/src/core/service/api/context/create-map-context.js +8 -1
  32. package/src/core/service/api/ui/locale.js +50 -0
  33. package/src/core/service/plugins/app/create-app.js +8 -3
  34. package/src/core/service/plugins/app/index.js +2 -2
  35. package/src/core/service/plugins/index.js +8 -2
  36. package/src/core/view/bridge/subscribe/api/request-component-observer.js +16 -1
  37. package/src/core/view/components/canvas/index.vue +3 -1
  38. package/src/core/view/components/editor/formats/image.js +3 -1
  39. package/src/core/view/components/editor/formats/index.js +3 -1
  40. package/src/core/view/components/editor/formats/link.js +9 -0
  41. package/src/core/view/components/editor/index.vue +33 -3
  42. package/src/core/view/components/image/index.vue +4 -5
  43. package/src/core/view/components/input/index.vue +53 -25
  44. package/src/core/view/components/picker-view-column/index.vue +1 -0
  45. package/src/core/view/components/progress/index.vue +20 -13
  46. package/src/core/view/components/rich-text/index.vue +13 -1
  47. package/src/core/view/components/rich-text/nodes-parser.js +23 -4
  48. package/src/core/view/components/scroll-view/index.vue +253 -122
  49. package/src/core/view/components/slider/index.vue +1 -1
  50. package/src/core/view/components/swiper/index.vue +3 -0
  51. package/src/core/view/components/textarea/index.vue +7 -3
  52. package/src/core/view/index.css +4 -0
  53. package/src/core/view/mixins/field.js +27 -9
  54. package/src/core/view/mixins/interact.js +13 -11
  55. package/src/core/view/mixins/keyboard.js +42 -26
  56. package/src/core/view/mixins/touchtrack.js +2 -2
  57. package/src/core/view/plugins/index.js +1 -1
  58. package/src/platforms/app-plus/constants.js +1 -0
  59. package/src/platforms/app-plus/helpers/get-real-path.js +7 -4
  60. package/src/platforms/app-plus/helpers/uuid.js +1 -1
  61. package/src/platforms/app-plus/service/api/ad/ad-base.js +159 -0
  62. package/src/platforms/app-plus/service/api/ad/ad.js +4 -8
  63. package/src/platforms/app-plus/service/api/ad/full-screen-video-ad.js +5 -98
  64. package/src/platforms/app-plus/service/api/ad/interactive-ad.js +257 -0
  65. package/src/platforms/app-plus/service/api/ad/interstitial-ad.js +15 -0
  66. package/src/platforms/app-plus/service/api/ad/rewarded-video-ad.js +15 -2
  67. package/src/platforms/app-plus/service/api/device/system.js +3 -2
  68. package/src/platforms/app-plus/service/api/file/open-document.js +7 -15
  69. package/src/platforms/app-plus/service/api/index.js +2 -0
  70. package/src/platforms/app-plus/service/api/location/get-location.js +8 -7
  71. package/src/platforms/app-plus/service/api/media/choose-image.js +22 -51
  72. package/src/platforms/app-plus/service/api/media/choose-video.js +19 -36
  73. package/src/platforms/app-plus/service/api/media/compress-video.js +2 -2
  74. package/src/platforms/app-plus/service/api/media/get-video-info.js +5 -2
  75. package/src/platforms/app-plus/service/api/network/request.js +27 -1
  76. package/src/platforms/app-plus/service/api/network/upload-file.js +1 -1
  77. package/src/platforms/app-plus/service/api/plugin/oauth.js +140 -8
  78. package/src/platforms/app-plus/service/api/storage/storage.js +1 -1
  79. package/src/platforms/app-plus/service/api/ui/popup.js +21 -11
  80. package/src/platforms/app-plus/service/api/ui/tab-bar.js +3 -2
  81. package/src/platforms/app-plus/service/api/util.js +5 -1
  82. package/src/platforms/app-plus/service/framework/app.js +21 -5
  83. package/src/platforms/app-plus/service/framework/config.js +1 -0
  84. package/src/platforms/app-plus/service/framework/plugins/index.js +8 -2
  85. package/src/platforms/app-plus/service/framework/plugins/lifecycle.js +2 -2
  86. package/src/platforms/app-plus/service/framework/subscribe-handlers/index.js +1 -1
  87. package/src/platforms/app-plus/service/framework/tab-bar.js +12 -2
  88. package/src/platforms/app-plus/service/framework/webview/index.js +2 -2
  89. package/src/platforms/app-plus/service/framework/webview/parser/title-nview-parser.js +73 -30
  90. package/src/platforms/app-plus/service/framework/webview/parser/webview-style-parser.js +16 -16
  91. package/src/platforms/app-plus/service/index.js +10 -3
  92. package/src/platforms/app-plus/service/publish-handler.js +3 -0
  93. package/src/platforms/app-plus/view/bridge/subscribe/index.js +5 -3
  94. package/src/platforms/app-plus/view/components/ad/index.vue +53 -44
  95. package/src/platforms/app-plus/view/components/cover-view/index.vue +13 -7
  96. package/src/platforms/app-plus/view/components/map/index.vue +29 -27
  97. package/src/platforms/app-plus/view/components/video/index.vue +40 -24
  98. package/src/platforms/app-plus/view/framework/plugins/gesture.js +17 -0
  99. package/src/platforms/app-plus/view/framework/plugins/index.js +3 -1
  100. package/src/platforms/app-plus/view/index.css +4 -0
  101. package/src/platforms/app-plus/view/mixins/cover.js +10 -15
  102. package/src/platforms/app-plus/view/mixins/native.js +45 -3
  103. package/src/platforms/app-plus-nvue/service/api/context/operate-map-player.js +3 -0
  104. package/src/platforms/h5/components/app/observable.js +3 -2
  105. package/src/platforms/h5/components/app/popup/mixins/modal.js +3 -3
  106. package/src/platforms/h5/components/app/popup/modal.vue +38 -2
  107. package/src/platforms/h5/components/app/popup/toast.vue +9 -1
  108. package/src/platforms/h5/components/app/tabBar.vue +39 -17
  109. package/src/platforms/h5/components/page/index.vue +5 -3
  110. package/src/platforms/h5/components/page/pageHead.vue +94 -75
  111. package/src/platforms/h5/components/system-routes/choose-location/index.vue +127 -66
  112. package/src/platforms/h5/components/system-routes/open-location/index.vue +193 -38
  113. package/src/platforms/h5/helpers/location.js +26 -0
  114. package/src/platforms/h5/helpers/todo-api.js +2 -2
  115. package/src/platforms/h5/service/api/device/clipboard.js +41 -0
  116. package/src/platforms/h5/service/api/device/get-system-info.js +75 -0
  117. package/src/platforms/h5/service/api/location/get-location.js +47 -18
  118. package/src/platforms/h5/service/api/media/MIMEType.js +53 -0
  119. package/src/platforms/h5/service/api/media/choose-file.js +9 -1
  120. package/src/platforms/h5/service/api/media/choose-image.js +9 -2
  121. package/src/platforms/h5/service/api/media/choose-video.js +9 -1
  122. package/src/platforms/h5/service/api/media/create_input.js +12 -3
  123. package/src/platforms/h5/service/api/ui/popup.js +3 -5
  124. package/src/platforms/h5/service/api/ui/tab-bar.js +1 -1
  125. package/src/platforms/h5/service/index.js +5 -0
  126. package/src/platforms/h5/view/bridge/subscribe/index.js +3 -2
  127. package/src/platforms/h5/view/components/ad/index.vue +112 -69
  128. package/src/platforms/h5/view/components/map/index.vue +96 -349
  129. package/src/platforms/h5/view/components/map/map-marker.js +287 -0
  130. package/src/platforms/h5/view/components/map/maps/callout.js +117 -0
  131. package/src/platforms/h5/view/components/map/maps/index.js +55 -0
  132. package/src/platforms/h5/view/components/video/index.vue +1 -1
  133. package/src/platforms/h5/view/index.css +4 -0
  134. package/src/platforms/mp-alipay/runtime/api/protocols.js +30 -3
  135. package/src/platforms/mp-baidu/runtime/api/protocols.js +5 -0
  136. package/src/platforms/mp-baidu/runtime/wrapper/component-parser.js +20 -18
  137. package/src/platforms/mp-baidu/runtime/wrapper/util.js +2 -1
  138. package/src/platforms/mp-kuaishou/runtime/api/protocols.js +3 -1
  139. package/src/platforms/mp-kuaishou/runtime/wrapper/component-parser.js +21 -1
  140. package/src/platforms/mp-lark/runtime/api/index.js +0 -0
  141. package/src/platforms/mp-lark/runtime/api/protocols.js +68 -0
  142. package/src/platforms/mp-lark/runtime/api/providers.js +6 -0
  143. package/src/platforms/mp-lark/runtime/index.js +1 -0
  144. package/src/platforms/mp-lark/runtime/web-view.js +11 -0
  145. package/src/platforms/mp-lark/runtime/wrapper/app-parser.js +33 -0
  146. package/src/platforms/mp-lark/runtime/wrapper/component-parser.js +50 -0
  147. package/src/platforms/mp-lark/runtime/wrapper/page-parser.js +39 -0
  148. package/src/platforms/mp-lark/runtime/wrapper/util.js +64 -0
  149. package/src/platforms/mp-qq/runtime/api/protocols.js +3 -1
  150. package/src/platforms/mp-toutiao/runtime/api/protocols.js +2 -0
  151. package/src/platforms/mp-toutiao/runtime/wrapper/component-parser.js +35 -19
  152. package/src/platforms/mp-weixin/helpers/get-user-profile.js +6 -0
  153. package/src/platforms/mp-weixin/runtime/index.js +6 -7
  154. package/src/platforms/mp-weixin/runtime/wrapper/app-base-parser.js +197 -126
  155. package/src/platforms/mp-weixin/runtime/wrapper/fix-set-data.js +37 -0
  156. package/src/shared/uni-id-mixin.js +77 -0
  157. package/src/shared/util.js +2 -0
@@ -3,11 +3,25 @@
3
3
  :id="id"
4
4
  v-on="$listeners"
5
5
  >
6
+ <map-marker
7
+ v-for="item in markers"
8
+ :key="item.id"
9
+ v-bind="item"
10
+ />
6
11
  <div
7
12
  ref="map"
8
- style="width: 100%; height: 100%; position: relative; overflow: hidden;"
13
+ style="width: 100%; height: 100%; position: relative; overflow: hidden"
9
14
  />
10
- <div style="position: absolute; top: 0; width: 100%; height: 100%; overflow: hidden; pointer-events: none;">
15
+ <div
16
+ style="
17
+ position: absolute;
18
+ top: 0;
19
+ width: 100%;
20
+ height: 100%;
21
+ overflow: hidden;
22
+ pointer-events: none;
23
+ "
24
+ >
11
25
  <slot />
12
26
  </div>
13
27
  </uni-map>
@@ -19,124 +33,34 @@ import {
19
33
  } from 'uni-mixins'
20
34
 
21
35
  import {
22
- hasOwn
23
- } from 'uni-shared'
36
+ loadMaps
37
+ } from './maps'
38
+
39
+ import mapMarker from './map-marker'
24
40
 
25
- let maps
26
- let callbacks
27
- function loadMap (callback) {
28
- if (maps) {
29
- callback()
30
- } else if (window.qq && window.qq.maps) {
31
- maps = window.qq.maps
32
- callback()
33
- } else if (callbacks) {
34
- callbacks.push(callback)
41
+ import { ICON_PATH_ORIGIN } from '../../../helpers/location'
42
+
43
+ function getLat (latLng) {
44
+ if ('getLat' in latLng) {
45
+ return latLng.getLat()
35
46
  } else {
36
- callbacks = [callback]
37
- const key = __uniConfig.qqMapKey
38
- const callbackName = '_callback' + Date.now()
39
- window[callbackName] = function () {
40
- delete window[callbackName]
41
- maps = window.qq.maps
42
- var Callout = maps.Callout = function (option = {}) {
43
- this.option = option
44
- var map = option.map
45
- this.position = option.position
46
- this.index = 1
47
- this.visible = this.alwaysVisible = option.display === 'ALWAYS'
48
- this.init()
49
- Object.defineProperty(this, 'onclick', {
50
- setter (callback) {
51
- this.div.onclick = callback
52
- },
53
- getter () {
54
- return this.div.onclick
55
- }
56
- })
57
- if (map) {
58
- this.setMap(map)
59
- }
60
- }
61
- Callout.prototype = new maps.Overlay()
62
- Callout.prototype.init = function () {
63
- var option = this.option
64
- var div = this.div = document.createElement('div')
65
- var divStyle = div.style
66
- divStyle.position = 'absolute'
67
- divStyle.whiteSpace = 'nowrap'
68
- divStyle.transform = 'translateX(-50%) translateY(-100%)'
69
- divStyle.zIndex = 1
70
- divStyle.boxShadow = option.boxShadow || 'none'
71
- divStyle.display = this.visible ? 'block' : 'none'
72
- var triangle = this.triangle = document.createElement('div')
73
- triangle.setAttribute('style',
74
- 'position: absolute;white-space: nowrap;border-width: 4px;border-style: solid;border-color: #fff transparent transparent;border-image: initial;font-size: 12px;padding: 0px;background-color: transparent;width: 0px;height: 0px;transform: translate(-50%, 100%);left: 50%;bottom: 0;'
75
- )
76
- this.setStyle(option)
77
- this.changed = function (key) {
78
- divStyle.display = this.visible ? 'block' : 'none'
79
- }
80
- div.appendChild(triangle)
81
- }
82
- Callout.prototype.construct = function () {
83
- var div = this.div
84
- var panes = this.getPanes()
85
- panes.floatPane.appendChild(div)
86
- }
87
- Callout.prototype.draw = function () {
88
- var overlayProjection = this.getProjection()
89
- if (!this.position || !this.div || !overlayProjection) {
90
- return
91
- }
92
- var pixel = overlayProjection.fromLatLngToDivPixel(this.position)
93
- var divStyle = this.div.style
94
- divStyle.left = pixel.x + 'px'
95
- divStyle.top = pixel.y + 'px'
96
- }
97
- Callout.prototype.destroy = function () {
98
- this.div.parentNode.removeChild(this.div)
99
- this.div = null
100
- this.triangle = null
101
- }
102
- Callout.prototype.setOption = function (option) {
103
- this.option = option
104
- this.setPosition(option.position)
105
- if (option.display === 'ALWAYS') {
106
- this.alwaysVisible = this.visible = true
107
- } else {
108
- this.alwaysVisible = false
109
- }
110
- this.setStyle(option)
111
- }
112
- Callout.prototype.setStyle = function (option) {
113
- var div = this.div
114
- var divStyle = div.style
115
- div.innerText = option.content
116
- divStyle.lineHeight = (option.fontSize || 14) + 'px'
117
- divStyle.fontSize = (option.fontSize || 14) + 'px'
118
- divStyle.padding = (option.padding || 8) + 'px'
119
- divStyle.color = option.color || '#000'
120
- divStyle.borderRadius = (option.borderRadius || 0) + 'px'
121
- divStyle.backgroundColor = option.bgColor || '#fff'
122
- divStyle.marginTop = '-' + (option.top + 5) + 'px'
123
- this.triangle.style.borderColor = `${option.bgColor || '#fff'} transparent transparent`
124
- }
125
- Callout.prototype.setPosition = function (position) {
126
- this.position = position
127
- this.draw()
128
- }
129
- callbacks.forEach(callback => callback())
130
- callbacks = null
131
- }
132
- const script = document.createElement('script')
133
- script.src = `https://map.qq.com/api/js?v=2.exp&key=${key}&callback=${callbackName}&libraries=geometry`
134
- document.body.appendChild(script)
47
+ return latLng.lat()
48
+ }
49
+ }
50
+
51
+ function getLng (latLng) {
52
+ if ('getLng' in latLng) {
53
+ return latLng.getLng()
54
+ } else {
55
+ return latLng.lng()
135
56
  }
136
57
  }
137
58
 
138
59
  export default {
139
60
  name: 'Map',
61
+ components: {
62
+ mapMarker
63
+ },
140
64
  mixins: [subscriber],
141
65
  props: {
142
66
  id: {
@@ -194,6 +118,12 @@ export default {
194
118
  showLocation: {
195
119
  type: [Boolean, String],
196
120
  default: false
121
+ },
122
+ libraries: {
123
+ type: Array,
124
+ default () {
125
+ return []
126
+ }
197
127
  }
198
128
  },
199
129
  data () {
@@ -204,7 +134,6 @@ export default {
204
134
  },
205
135
  isMapReady: false,
206
136
  isBoundsReady: false,
207
- markersSync: [],
208
137
  polylineSync: [],
209
138
  circlesSync: [],
210
139
  controlsSync: []
@@ -222,56 +151,6 @@ export default {
222
151
  this._map.setZoom(Number(val) || 16)
223
152
  })
224
153
  },
225
- markers (val, old) {
226
- this.mapReady(() => {
227
- var add = []
228
- var has = []
229
- var changed = []
230
- var changedOption = []
231
- var remove = []
232
- val.forEach(option => {
233
- if (!('id' in option)) {
234
- add.push(option)
235
- } else {
236
- var isOld = false
237
- for (var index = 0; index < old.length; index++) {
238
- var element = old[index]
239
- if (!('id' in element)) {
240
- old.splice(index--, 1)
241
- continue
242
- }
243
- if (element.id !== option.id) {
244
- continue
245
- }
246
- isOld = true
247
- has.push(element.id)
248
- if (JSON.stringify(element) !== JSON.stringify(option)) {
249
- changed.push(element.id)
250
- changedOption.push(option)
251
- }
252
- old.splice(index--, 1)
253
- }
254
- if (!isOld) {
255
- add.push(option)
256
- }
257
- }
258
- })
259
- var markers = this.markersSync
260
- markers.forEach(marker => {
261
- var id = marker.id
262
- var index
263
- if (has.indexOf(id) >= 0) {
264
- if ((index = changed.indexOf(id)) >= 0) {
265
- this.changeMarker(marker, changedOption[index])
266
- }
267
- } else {
268
- remove.push(marker)
269
- }
270
- })
271
- this.removeMarkers(remove)
272
- this.createMarkers(add)
273
- })
274
- },
275
154
  polyline (val) {
276
155
  this.mapReady(() => {
277
156
  this.createPolyline()
@@ -299,6 +178,7 @@ export default {
299
178
  }
300
179
  },
301
180
  created () {
181
+ this._markers = {}
302
182
  var latitude = this.latitude
303
183
  var longitude = this.longitude
304
184
  if (latitude && longitude) {
@@ -307,12 +187,12 @@ export default {
307
187
  }
308
188
  },
309
189
  mounted () {
310
- loadMap(() => {
190
+ loadMaps(this.libraries, result => {
191
+ this._maps = result
311
192
  this.init()
312
193
  })
313
194
  },
314
195
  beforeDestroy () {
315
- this.removeMarkers(this.markersSync)
316
196
  this.removePolyline()
317
197
  this.removeCircles()
318
198
  this.removeControls()
@@ -323,6 +203,7 @@ export default {
323
203
  type,
324
204
  data = {}
325
205
  }) {
206
+ const maps = this._maps
326
207
  function callback (res, err) {
327
208
  res = res || {}
328
209
  res.errMsg = `${type}:${err ? 'fail' + err : 'ok'}`
@@ -341,8 +222,8 @@ export default {
341
222
  var latitude
342
223
  var longitude
343
224
  var center = this._map.getCenter()
344
- latitude = center.getLat()
345
- longitude = center.getLng()
225
+ latitude = getLat(center)
226
+ longitude = getLng(center)
346
227
 
347
228
  callback({
348
229
  latitude: latitude,
@@ -368,7 +249,10 @@ export default {
368
249
  var duration = data.duration
369
250
  var autoRotate = !!data.autoRotate
370
251
  var rotate = Number(data.rotate) ? data.rotate : 0
371
- var rotation = marker.getRotation()
252
+ let rotation = 0
253
+ if ('getRotation' in marker) {
254
+ rotation = marker.getRotation()
255
+ }
372
256
  var a = marker.getPosition()
373
257
  var b = new maps.LatLng(destination.latitude, destination.longitude)
374
258
  var distance = maps.geometry.spherical.computeDistanceBetween(a, b) / 1000
@@ -410,8 +294,15 @@ export default {
410
294
  }
411
295
  rotate = maps.geometry.spherical.computeHeading(a, b) - lastRtate
412
296
  }
413
- marker.setRotation(rotation + rotate)
414
- marker.moveTo(b, speed)
297
+ if ('setRotation' in marker) {
298
+ marker.setRotation(rotation + rotate)
299
+ }
300
+ if ('moveTo' in marker) {
301
+ marker.moveTo(b, speed)
302
+ } else {
303
+ marker.setPosition(b)
304
+ maps.event.trigger(marker, 'moveend', {})
305
+ }
415
306
  } catch (error) {
416
307
  callback(null, error)
417
308
  }
@@ -427,12 +318,12 @@ export default {
427
318
  var northeast = latLngBounds.getNorthEast()
428
319
  callback({
429
320
  southwest: {
430
- latitude: southwest.getLat(),
431
- longitude: southwest.getLng()
321
+ latitude: getLat(southwest),
322
+ longitude: getLng(southwest)
432
323
  },
433
324
  northeast: {
434
- latitude: northeast.getLat(),
435
- longitude: northeast.getLng()
325
+ latitude: getLat(northeast),
326
+ longitude: getLng(northeast)
436
327
  }
437
328
  })
438
329
  })
@@ -447,6 +338,7 @@ export default {
447
338
  }
448
339
  },
449
340
  init () {
341
+ const maps = this._maps
450
342
  var center = new maps.LatLng(this.center.latitude, this.center.longitude)
451
343
  var map = this._map = new maps.Map(this.$refs.map, {
452
344
  center,
@@ -457,6 +349,9 @@ export default {
457
349
  zoomControl: false,
458
350
  scaleControl: false,
459
351
  panControl: false,
352
+ fullscreenControl: false,
353
+ streetViewControl: false,
354
+ keyboardShortcuts: false,
460
355
  minZoom: 5,
461
356
  maxZoom: 18,
462
357
  draggable: true
@@ -481,8 +376,8 @@ export default {
481
376
  return {
482
377
  scale: map.getZoom(),
483
378
  centerLocation: {
484
- latitude: center.getLat(),
485
- longitude: center.getLng()
379
+ latitude: getLat(center),
380
+ longitude: getLng(center)
486
381
  }
487
382
  }
488
383
  }
@@ -503,14 +398,11 @@ export default {
503
398
  var latitude
504
399
  var longitude
505
400
  var center = map.getCenter()
506
- latitude = center.getLat()
507
- longitude = center.getLng()
401
+ latitude = getLat(center)
402
+ longitude = getLng(center)
508
403
  this.$emit('update:latitude', latitude)
509
404
  this.$emit('update:longitude', longitude)
510
405
  })
511
- if (this.markers && Array.isArray(this.markers) && this.markers.length) {
512
- this.createMarkers(this.markers)
513
- }
514
406
  if (this.polyline && Array.isArray(this.polyline) && this.polyline.length) {
515
407
  this.createPolyline()
516
408
  }
@@ -532,6 +424,7 @@ export default {
532
424
  this.$emit('mapready')
533
425
  },
534
426
  centerChange () {
427
+ const maps = this._maps
535
428
  var latitude = Number(this.latitude)
536
429
  var longitude = Number(this.longitude)
537
430
  if (latitude !== this.center.latitude || longitude !== this.center.longitude) {
@@ -544,156 +437,8 @@ export default {
544
437
  }
545
438
  }
546
439
  },
547
- createMarkers (markerOptions) {
548
- var map = this._map
549
- var markers = this.markersSync
550
- markerOptions.forEach(option => {
551
- var marker = new maps.Marker({
552
- map,
553
- flat: true,
554
- autoRotation: false
555
- })
556
- marker.id = option.id
557
- this.changeMarker(marker, option)
558
- maps.event.addListener(marker, 'click', e => {
559
- var callout = marker.callout
560
- if (callout) {
561
- var div = callout.div
562
- var parent = div.parentNode
563
- if (!callout.alwaysVisible) {
564
- callout.set('visible', !callout.visible)
565
- }
566
- if (callout.visible) {
567
- parent.removeChild(div)
568
- parent.appendChild(div)
569
- }
570
- }
571
- hasOwn(option, 'id') && this.$trigger('markertap', {}, {
572
- markerId: option.id
573
- })
574
- })
575
- markers.push(marker)
576
- })
577
- },
578
- changeMarker (marker, option) {
579
- var self = this
580
- var map = this._map
581
- var title = option.title || option.name
582
- var position = new maps.LatLng(option.latitude, option.longitude)
583
- var img = new Image()
584
- img.onload = () => {
585
- var anchor = option.anchor || {}
586
- var icon
587
- var w
588
- var h
589
- var top
590
- var x = anchor.x
591
- var y = anchor.y
592
- if (option.iconPath && (option.width || option.height)) {
593
- w = option.width || img.width / img.height * option.height
594
- h = option.height || img.height / img.width * option.width
595
- } else {
596
- w = img.width / 2
597
- h = img.height / 2
598
- }
599
- x = (typeof x === 'number' ? x : 0.5) * w
600
- y = (typeof y === 'number' ? y : 1) * h
601
- top = h - (h - y)
602
- icon = new maps.MarkerImage(img.src, null, null, new maps.Point(x, y), new maps.Size(w, h))
603
- marker.setPosition(position)
604
- marker.setIcon(icon)
605
- marker.setRotation(option.rotate || 0)
606
- var labelOpt = option.label || {}
607
- if (marker.label) {
608
- marker.label.setMap(null)
609
- delete (marker.label)
610
- }
611
- var label
612
- if (labelOpt.content) {
613
- label = new maps.Label({
614
- position,
615
- map,
616
- clickable: false,
617
- content: labelOpt.content,
618
- style: {
619
- border: 'none',
620
- padding: '8px',
621
- background: 'none',
622
- color: labelOpt.color,
623
- fontSize: (labelOpt.fontSize || 14) + 'px',
624
- lineHeight: (labelOpt.fontSize || 14) + 'px',
625
- marginLeft: labelOpt.x,
626
- marginTop: labelOpt.y
627
- }
628
- })
629
- marker.label = label
630
- }
631
- var calloutOpt = option.callout || {}
632
- var callout = marker.callout
633
- var calloutStyle
634
- if (calloutOpt.content) {
635
- calloutStyle = {
636
- id: option.id,
637
- position,
638
- map,
639
- top,
640
- content: calloutOpt.content,
641
- color: calloutOpt.color,
642
- fontSize: calloutOpt.fontSize,
643
- borderRadius: calloutOpt.borderRadius,
644
- bgColor: calloutOpt.bgColor,
645
- padding: calloutOpt.padding,
646
- boxShadow: calloutOpt.boxShadow,
647
- display: calloutOpt.display
648
- }
649
- } else if (title) {
650
- calloutStyle = {
651
- id: option.id,
652
- position,
653
- map,
654
- top,
655
- content: title,
656
- boxShadow: '0px 0px 3px 1px rgba(0,0,0,0.5)'
657
- }
658
- }
659
- if (calloutStyle) {
660
- if (callout) {
661
- callout.setOption(calloutStyle)
662
- } else {
663
- callout = marker.callout = new maps.Callout(calloutStyle)
664
-
665
- callout.div.onclick = function ($event) {
666
- hasOwn(option, 'id') && self.$trigger('callouttap', $event, {
667
- markerId: option.id
668
- })
669
- $event.stopPropagation()
670
- $event.preventDefault()
671
- }
672
- }
673
- } else {
674
- if (callout) {
675
- callout.setMap(null)
676
- delete (marker.callout)
677
- }
678
- }
679
- }
680
- img.src = option.iconPath ? this.$getRealPath(option.iconPath)
681
- : 'data:image/png;base64,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'
682
- },
683
- removeMarkers (markers) {
684
- for (var index = 0; index < markers.length; index++) {
685
- var marker = markers[index]
686
- if (marker.label) {
687
- marker.label.setMap(null)
688
- }
689
- if (marker.callout) {
690
- marker.callout.setMap(null)
691
- }
692
- marker.setMap(null)
693
- markers.splice(index--, 1)
694
- }
695
- },
696
440
  createPolyline () {
441
+ const maps = this._maps
697
442
  var map = this._map
698
443
  var polyline = this.polylineSync
699
444
  this.removePolyline()
@@ -733,6 +478,7 @@ export default {
733
478
  polyline.splice(0, polyline.length)
734
479
  },
735
480
  createCircles () {
481
+ const maps = this._maps
736
482
  var map = this._map
737
483
  var circles = this.circlesSync
738
484
  this.removeCircles()
@@ -740,21 +486,24 @@ export default {
740
486
  var center = new maps.LatLng(option.latitude, option.longitude)
741
487
 
742
488
  function getColor (color) {
743
- var c = color.match(/#[0-9A-Fa-f]{6}([0-9A-Fa-f]{2})?/)
744
- if (c && c.length) {
745
- return maps.Color.fromHex(c[0], Number('0x' + c[1] || 255) / 255)
746
- } else {
747
- return undefined
489
+ var c = color && color.match(/#[0-9A-Fa-f]{6}([0-9A-Fa-f]{2})?/)
490
+ if ('Color' in maps) {
491
+ if (c && c.length) {
492
+ return maps.Color.fromHex(c[0], Number('0x' + c[1] || 255) / 255)
493
+ } else {
494
+ return undefined
495
+ }
748
496
  }
497
+ return color
749
498
  }
750
499
  var circle = new maps.Circle({
751
500
  map,
752
501
  center,
753
502
  clickable: false,
754
503
  radius: option.radius,
755
- strokeWeight: option.strokeWidth,
756
- fillColor: getColor(option.fillColor),
757
- strokeColor: getColor(option.color),
504
+ strokeWeight: Number(option.strokeWidth) || 1,
505
+ fillColor: getColor(option.fillColor) || getColor('#00000001'),
506
+ strokeColor: getColor(option.color) || '#000000',
758
507
  strokeDashStyle: 'solid'
759
508
  })
760
509
  circles.push(circle)
@@ -768,6 +517,7 @@ export default {
768
517
  circles.splice(0, circles.length)
769
518
  },
770
519
  createControls () {
520
+ const maps = this._maps
771
521
  var _self = this
772
522
  var map = this._map
773
523
  var controls = this.controlsSync
@@ -814,6 +564,7 @@ export default {
814
564
  controls.splice(0, controls.length)
815
565
  },
816
566
  createLocation () {
567
+ const maps = this._maps
817
568
  var map = this._map
818
569
  var location = this._location
819
570
  if (location) {
@@ -829,9 +580,7 @@ export default {
829
580
  location = new maps.Marker({
830
581
  position,
831
582
  map,
832
- icon: new maps.MarkerImage(
833
- 'data:image/png;base64,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',
834
- null, null, new maps.Point(22, 22), new maps.Size(44, 44)),
583
+ icon: new maps.MarkerImage(ICON_PATH_ORIGIN, null, null, new maps.Point(22, 22), new maps.Size(44, 44)),
835
584
  flat: true,
836
585
  rotation: 0
837
586
  })
@@ -879,6 +628,7 @@ export default {
879
628
  }
880
629
  },
881
630
  fitBounds (points, cb) {
631
+ const maps = this._maps
882
632
  this.boundsReady(() => {
883
633
  var map = this._map
884
634
  var bounds = new maps.LatLngBounds()
@@ -914,14 +664,11 @@ export default {
914
664
  }
915
665
  },
916
666
  getMarker (id) {
917
- var markers = this.markersSync
918
- for (var index = 0; index < markers.length; index++) {
919
- var element = markers[index]
920
- if (element.id === id) {
921
- return element
922
- }
667
+ var marker = this._markers[id]
668
+ if (!marker) {
669
+ throw new Error('translateMarker: fail cannot find marker with id ' + id)
923
670
  }
924
- throw new Error('translateMarker: fail cannot find marker with id ' + id)
671
+ return marker
925
672
  }
926
673
  }
927
674
  }