'a'
mh-two-thousand-and-two
2024-04-12 44d2c92345cd156a59fc327b3060292a282d2893
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
import {
  invokeMethod,
  getCurrentPageVm
} from '../../platform'
 
import {
  callback
} from 'uni-shared'
 
function operateMapPlayer (mapId, pageVm, type, data) {
  invokeMethod('operateMapPlayer', mapId, pageVm, type, data)
}
 
UniServiceJSBridge.subscribe('onMapMethodCallback', ({
  callbackId,
  data
}) => {
  callback.invoke(callbackId, data)
})
 
const methods = ['getCenterLocation',
  'moveToLocation',
  'getScale',
  'getRegion',
  'includePoints',
  'translateMarker',
  'addCustomLayer',
  'removeCustomLayer',
  'addGroundOverlay',
  'removeGroundOverlay',
  'updateGroundOverlay',
  'initMarkerCluster',
  'addMarkers',
  'removeMarkers',
  'moveAlong',
  'setLocMarkerIcon',
  'openMapApp']
 
export class MapContext {
  constructor (id, pageVm) {
    this.id = id
    this.pageVm = pageVm
  }
 
  on (name, callback) {
    operateMapPlayer(this.id, this.pageVm, 'on', {
      name,
      callback
    })
  }
}
 
MapContext.prototype.$getAppMap = function () {
  if (__PLATFORM__ === 'app-plus') {
    return plus.maps.getMapById(this.pageVm.$page.id + '-map-' + this.id)
  }
}
 
methods.forEach(function (method) {
  MapContext.prototype[method] = callback.warp(function (options, callbackId) {
    options.callbackId = callbackId
    operateMapPlayer(this.id, this.pageVm, method, options)
  })
})
 
export function createMapContext (id, context) {
  if (context) {
    return new MapContext(id, context)
  }
  return new MapContext(id, getCurrentPageVm('createMapContext'))
}