首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >L-map,未正确显示,framework7弹出窗口中的vue2leaflet

L-map,未正确显示,framework7弹出窗口中的vue2leaflet
EN

Stack Overflow用户
提问于 2019-07-24 08:01:03
回答 1查看 293关注 0票数 0

我有下一个弹出窗口

代码语言:javascript
复制
<f7-popup class="demo-popup" :opened="popupDetalle" @popup:closed="popupDetalle = false">
            <f7-page>
                <f7-navbar title="Editar servicio">
                <f7-nav-right>
                    <f7-link popup-close>Cerrar</f7-link>
                </f7-nav-right>
                </f7-navbar>
                <div id="app">
                   <l-map ref="mymap" :zoom="zoom" :center="center">
                      <l-tile-layer :url="url" :attribution="attribution"> 
                        </l-tile-layer>
                       <l-marker :lat-lng="marker.position"></l-marker>
                    </l-map>
                </div>
            </f7-page>
</f7-popup>

在我的脚本中:

代码语言:javascript
复制
<script>
import 'leaflet/dist/leaflet.css';
import { LMap, LTileLayer, LMarker, LPopup } from "vue2-leaflet";
export default {
    components:{
      LMap, 
      LTileLayer, 
      LMarker, 
      LPopup
     }
}
</script>

和css:

代码语言:javascript
复制
<style scoped>
    .appMap {
        width: 100%;
        height: 400px;
    }
</style>

和main.js:

代码语言:javascript
复制
import L from 'leaflet'
import { Icon } from 'leaflet'
import 'leaflet/dist/leaflet.css'

delete L.Icon.Default.prototype._getIconUrl

L.Icon.Default.mergeOptions({
    iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'),
    iconUrl: require('leaflet/dist/images/marker-icon.png'),
    shadowUrl: require('leaflet/dist/images/marker-shadow.png')
})

但从视觉上看,它看起来像这样:

基本上我是用文档指导的,css和它的组件都是导入的,指南https://korigan.github.io/Vue2Leaflet/#/quickstart.md

EN

回答 1

Stack Overflow用户

发布于 2019-07-24 09:21:08

如果您在地图显示后调整浏览器窗口的大小,我怀疑您会发现Leaflet正确地加载了地图瓦片。

当地图第一次被创建时,它将被隐藏起来,这样传单就不会知道它有多大。一旦弹出窗口出现,你就需要给它一次机会。Leaflet本身可以观察浏览器窗口大小的调整,但它不知道任何关于弹出窗口的信息。

您已经在<l-map>上获得了ref="mymap",因此只需使用以下命令来使大小无效:

代码语言:javascript
复制
this.$refs.map.mapObject.invalidateSize()

在弹出窗口显示后,您需要找到一个合适的位置来进行调用。时机很关键,如果你太快调用它,那么大小仍然是错误的,它不会有任何帮助。

最初,您可能希望添加一个按钮,并将invalidateSize调用放入其单击处理程序中。显然,这不是一个可接受的解决方案,但它会让你看到调用invalidateSize的效果,确认这确实解决了无法加载磁贴的问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57173595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档