javascript - 我的循环创建了谷歌地图标记,但它无法正确设置它们的位置,因此它们不会被显示。硬编码位置有效

标签 javascript vue.js vuejs2 vue2-google-maps

出于某种原因,在循环遍历标记数组后,我看不到应该根据我的标记数组中的对象放置的谷歌地图标记。如果我要创建第二个组件并对位置进行硬编码,则会出现标记。检查使用循环创建的组件后,我意识到它们的位置设置为未定义,即使我将其设置为 m.position 知道为什么吗?

<template>
    <div class="wrapper">
        <GmapMap
            :center="center"
            :zoom="zoom"
            :map-type-id="map"
            style="width: 100%; height: 850px"
        >
        <GmapMarker
            :key="index"
            v-for="(m, index) in markers"
            :position="m.position"
            :clickable="true"
            :draggable="true"
            @click="center=m.position"
        />
        </GmapMap>
    </div>
</template>

<script>
    export default {
        data: function() {
            return {
                images: [],
                markers: [{lat: 42.150527, lng: 24.746477}, {lat: 42.160527, lng: 24.796477}],
                center: {lat: 42.150527, lng: 24.746477},
                zoom: 15,
                map: 'roadmap'
            }
        }
    }
</script>

使用以下代码对 GmapMarker 进行硬编码后,它会显示出来。

<GmapMarker
    :position="{lat: 42.150527, lng: 24.746477}"
    :clickable="true"
    :draggable="true"
    @click="center={lat: 42.150527, lng: 24.746477}"
/>

最佳答案

在您的 v-for 循环中,m{lat: ..., lng: ...} 对象。

这些对象没有position属性所以改变

:position="m.position"
@click="center=m.position"

:position="m"
@click="center=m"

关于javascript - 我的循环创建了谷歌地图标记,但它无法正确设置它们的位置,因此它们不会被显示。硬编码位置有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54208701/

相关文章:

vue.js - 验证为真后如何在vue js中隐藏错误消息?

ruby-on-rails - Rails + Vue.js - 使用 Ajax 更新 Vue 组件

javascript - 无法访问监视处理程序 vuejs 中的数据变量

javascript - 预加载器 v-cloak 不显示文本加载

javascript - Node - 编辑特定文件后重新启动服务器

javascript - 如何在 Odoo OCA 小部件 web_widget_x2many_2d_matrix 中按顺序而不是名称对记录进行排序?

javascript - 我们应该使用 SSG 来部署使用 Nuxt.js 创建的仪表板吗?

javascript - 如何使用webpack/babel预解析JS模板字符串?

javascript - 使用纯javascript在客户端读取JSON文件数据

javascript - Vue2 在刷新任何页面时重定向到主页