648540858
2022-04-08 ba8633e99a27b90c55b47e8f7d6225f1f0efc6bb
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
<template>
  <div id="mapContainer" style="width: 100%;height: 100%;"></div>
</template>
 
<script>
import 'ol/ol.css';
import Map from 'ol/Map';
import OSM from 'ol/source/OSM';
import XYZ from 'ol/source/XYZ';
import TileLayer from 'ol/layer/Tile';
import View from 'ol/View';
import {get as getProj, fromLonLat} from 'ol/proj';
import {ZoomSlider, Zoom} from 'ol/control';
 
let olMap = null;
 
export default {
    name: 'MapComponent',
    data() {
        return {
 
 
        };
    },
    created(){
      this.$nextTick(() => {
        this.init();
      })
 
    },
    props: [],
    mounted () {
 
    },
    methods: {
      init(){
 
        let center = fromLonLat([116.41020, 39.915119]);
        if (mapParam.center) {
          center = fromLonLat(mapParam.center);
        }
        const view = new View({
          center: center,
          zoom:  mapParam.zoom || 10,
          projection: this.projection,
          maxZoom: mapParam.maxZoom || 19,
          minZoom: mapParam.minZoom || 1,
        });
        let tileLayer = null;
        if (mapParam.tilesUrl) {
          tileLayer = new TileLayer({
            source: new XYZ({
              projection: getProj("EPSG:3857"),
              wrapX: false,
              tileSize: 256 || mapParam.tileSize,
              url: mapParam.tilesUrl
            })
          })
        }else {
          tileLayer = new TileLayer({
            preload: 4,
            source: new OSM(),
          })
        }
        olMap = new Map({
          target: "mapContainer", // 容器ID
          layers:  [tileLayer], // 默认图层
          view: view,  // 视图
          controls:[   // 控件
            // new ZoomSlider(),
            new Zoom(),
          ] ,
        })
      },
      setCenter(point){
 
      },
      zoomIn(zoom){
 
      },
      zoomOut(zoom){
 
      },
      centerAndZoom(point,zoom,callback){
 
      },
      panTo(point){
 
      },
      openInfoBox(){
 
      },
      closeInfoBox(){
 
      },
      addLayer(){
 
      },
      removeLayer(){
 
      }
 
 
 
    },
    destroyed() {
      // if (this.jessibuca) {
      //   this.jessibuca.destroy();
      // }
      // this.playing = false;
      // this.loaded = false;
      // this.performance = "";
    },
}
</script>
 
<style>
 
</style>