EsriMap.vue 2.02 KB
<template>
  <div class="map">
    <div :id="viewId" class="viewDiv">
    </div>
  </div>  
</template>
<script>
    import {loadModules} from 'esri-loader'
    import {maps} from '@/libs/map/mapUtils'
    export default {
        props:{
            viewId:{
                type:String,
                default:"mainView"
            },
            afterLoaderFunction:{
                type:Function,
                default:null
            }
        },
        data(){
              return{
                
              }
            },

            mounted(){
                this.initMap();
            },
            methods:{
                initMap(){
                    var self = this;
                    loadModules([
                        "esri/views/MapView",
                        "esri/Map"
                    ]).then(([
                        MapView,
                        esriMap
                    ]) => {
                        var map = new esriMap({
                            basemap:"osm"
                        });
                        //108.95	34.27	
                        var view = new MapView({
                            container: self.viewId,
                            map: map,
                            zoom:10,
                            center: [-0.154133333770497,0.6138183594020817],
                                spatialReference: {
                                    wkid: 102100
                                   }
                          });
                        maps[self.viewId] = view; 
                        if(self.afterLoaderFunction && typeof self.afterLoaderFunction == 'function'){
                            self.afterLoaderFunction(view);
                        }
                    }).catch(err => {
                        throw(err);
                    });
                }
            }

    }
</script>
<style scoped lang="less">
  .map{
      height: 100%;
      width: 100%;
      .viewDiv{
          height: 100%;
          width: 100%;
          }
  }
</style>