gpt4 book ai didi

javascript - Vue传单在构建应用程序时不起作用

转载 作者:行者123 更新时间:2023-12-05 00:33:00 26 4
gpt4 key购买 nike

我目前正在创建一个使用 vue-leaflet 的 vue3 cli 应用程序(vue3兼容版本)
在我的本地开发环境中一切正常,但是一旦构建了我的应用程序, map 就不会加载,即使我像这样调整大小 thread解释得很好。
我尝试使用 leafletObject.invalidateSize()方法,但没有任何改变。
我的 map 是第一次调用时使用 v-if 调用的组件(在 ListView 和 map 之间切换)和初始化后的 v-show

  <transition name="fade" mode="out-in">
<Map v-if="mapInit"
v-show="(!mobileView && !listing) ||
(mobileView && !listing && !getFiltresMobile)"
:liste="getFilteredList"/>
</transition>
这是我使用 npm run serve 时在我的开发版本上得到的结果
enter image description here
这是产品版本的结果
lealfet prod
这是我的代码的相关部分,如果您认为需要显示更多代码,我可以添加更多
<template>

<div id="map">
<l-map v-if="!loading" :style="mapHeight" :zoom="zoom" :center="centerValue" :options="{tap : false}" ref="map">
<l-tile-layer :url="url"></l-tile-layer>
<l-marker v-for="(marqueur) in mapData" :key="marqueur.id" :visible="isFiltered(marqueur)" :lat-lng="marqueur.latLng" :ref="setMarkerRefs" @click="markerClick(marqueur.latLng)">
<l-icon :icon-url="checkActive(marqueur.latLng)" :icon-size="[30 , 37]" :popup-anchor="popupUpPosition" :icon-anchor="[15, 37]"/>
<l-popup :options="popupoptions">
<MarqueurPopup :contenu="marqueur"/>
</l-popup>
</l-marker>
</l-map>
<Loader v-if="loading"/>
</div>

</template>
JS
<script>
import "leaflet/dist/leaflet.css"
import { LMap , LTileLayer , LPopup , LMarker , LIcon } from "@vue-leaflet/vue-leaflet";

export default {
name: "Map",
props : ['liste'],
components: {
Loader,
MarqueurPopup,
LMap,
LTileLayer,
LMarker,
LPopup,
LIcon,
},
data() {
return {
url: 'https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}{r}.png',
zoom: 13,
mapData : [],
markerRefs : [],
markerRefsDef : [],
popupoptions : {
maxWidth : 1000,
minWidth : 300,
closeButton : false,
}
};
},

beforeMount() {
this.initMap()
},
mounted() {
setTimeout( () => {
console.log(this.$refs.map.leafletObject) // returns the leaflet map objects
this.$refs.map.leafletObject.invalidateSize(); // no error but does nothing
}, 1000);
},
computed : {
popupUpPosition() {
if (window.innerWidth < 768) {
return [0, 74]
}
return [0, -37]
},
mapHeight() {
let colonneValue = window.innerWidth / 12;
if (colonneValue < 115) {
colonneValue = 115
}
let height = window.innerHeight - colonneValue;

return {height : height+'px'}
},
},
methods : {
async initMap() {
this.$store.commit('changeLoading' , true);
this.mapData = []
this.mapData = this.getFilteredList
this.$store.commit('changeLoading' , false);
},
}
}
</script>
有没有办法检查 invalidateSize()方法触发器?我的 console.log 没有错误,但没有任何变化,所以它可能不会触发该方法?

最佳答案

相反,Leaflet CSS 看起来像是错误地加载到了您的产品包中:图 block 被打乱了,没有缩放和属性控制。

关于javascript - Vue传单在构建应用程序时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70563401/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com