0

我正在使用 vue 制作一个 arc gis 驱动的应用程序,因为地图的中心可以根据用户位置进行更改,我将默认位置设置为一些道具,然后将它们传递到我的地图组件中,以便在地图组件中调用 mount()用于渲染的钩子。

我认为我非常接近正确地做到这一点,但是当我在控制台的地图组件中记录我的道具时,它说它们是未定义的。

我不确定我的应用程序代码有问题还是我的子组件代码有问题?

正如您在我的 app.vue 中看到的那样,我什至尝试传入纯整数来测试值,但它们仍然未定义。

应用程序.vue

<template>
    <div id="app">
        <web-map v-bind:centerX="-118" v-bind:centerY="34" />

        <div class="center">
          <b-button class="btn-block" @click="getLocation" variant="primary">My Location</b-button>
        </div>
    </div>


</template>

<script>
import WebMap from './components/webmap.vue';

export default {
    name: 'App',
    components: { WebMap }, 
    data(){
      return{
        lat: -118,
        long: 34
      }
    },
};
</script>

网络地图.vue

<template>
  <div></div>
</template>

<script>
import { loadModules } from 'esri-loader';

export default {
  name: 'web-map',
  props:['centerX, centerY'],
  data: function(){
    return{
      X: this.centerX,
      Y: this.centerY
    }
  },
  mounted() {
    console.log(this.X,this.Y)

    // lazy load the required ArcGIS API for JavaScript modules and CSS
    loadModules(['esri/Map', 'esri/views/MapView'], { css: true })
    .then(([ArcGISMap, MapView]) => {
      const map = new ArcGISMap({
        basemap: 'topo-vector'
      });

      this.view = new MapView({
        container: this.$el,
        map: map,
        center: [this.X,this.Y],   ///USE PROPS HERE FOR NEW CENTER
        zoom: 8
      });
    });
  },
  beforeDestroy() {
    if (this.view) {
      // destroy the map view
      this.view.container = null;
    }
  }
};

</script>


4

1 回答 1

0

有一个错字。改变:

props:['centerX, centerY'],

至:

props:['centerX', 'centerY'],
于 2020-04-19T04:15:31.427 回答