折线 - 使用 vue 3 的 Gmap [已关闭]

Polyline - Gmap using vue 3 [closed]

提问人:Arjun Menon 提问时间:11/15/2023 最后编辑:Arjun Menon 更新时间:11/15/2023 访问量:48

问:


编辑问题以包括所需的行为、特定问题或错误以及重现问题所需的最短代码。这将帮助其他人回答这个问题。

8天前关闭。

这篇文章在 8 天前经过编辑并提交审核。

我正在根据 api 数据在 vue 3 中创建折线。 因此,我正在从 API 数据中填充 path 属性。 一旦绘制了线条,当我单击任何一条折线时,就会有一种方法可以更改 strokeWeight,以便突出显示它(就好像它被选中一样)

this.polylineOptions[tradeId].strokeWeight = 3;
this.polylineOptions[tradeId].strokeColor = "red"; 

这是我写的要改变的行,但它没有反映出来。 在 Vue 开发者工具选项卡中,我可以看到 strokeColor 已更改,但 UI 没有反映。 同样的代码在 Vue 2 中有效。

我认为有一个技术故障,因为我在这里放置了我创建折线的方式,

export default {
    name: "AddGoogleMap",
    components: {
        popupFrom: PopUpFrom,
        popupTo: PopUpTo,
        GoogleMap,
        CustomMarker,
        Polyline
    },
    props: {
        tradeDetails: {
            type: Array,
            default: function () { return {} }
        }
    },

    data() {
        return {
            center: {
                lat: 46.2276,
                lng: 2.2137
            },
            polylineOptions: [{
                path: [],
                strokeColor: 'blue',
                strokeOpacity: 1,
                strokeWeight: 0.8,
                geodesic: true
            },
            {
                path: [],
                strokeColor: 'blue',
                strokeOpacity: 1,
                strokeWeight: 0.8,
                geodesic: true
            },
            {
                path: [],
                strokeColor: 'blue',
                strokeOpacity: 1,
                strokeWeight: 0.8,
                geodesic: true
            },
            {
                path: [],
                strokeColor: 'blue',
                strokeOpacity: 1,
                strokeWeight: 0.8,
                geodesic: true
            },
            {
                path: [],
                strokeColor: 'blue',
                strokeOpacity: 1,
                strokeWeight: 0.8,
                geodesic: true
            }],            
        };
    },

    async mounted() {
        this.loadTrades();
        this.addZoneMarkers();
        this.addPolyLinePaths();  
        this.highlightFirstTrade();            
        this.addToZoneMarkers();
        await this.addFromZoneMarkers();
    },

    methods: {
        addPolyLinePaths: function () {
            for (let element of this.trades) {
                let path = [
                    { lat: element.fromArea.Latitude, lng: element.fromArea.Longitude, name: element.fromArea.Name },
                    { lat: element.toArea.Latitude, lng: element.toArea.Longitude, name: element.toArea.Name }
                ];
                this.paths.push(path);
            }
            
            let counter = 0;
            for (let path of this.paths) {
                for (let cordinate of path) {
                    this.polylineOptions[counter].path.push({ lat: cordinate.lat, lng: cordinate.lng });
                }
                counter = counter + 1;
            }
            console.log(this.polylineOptions.length);
        },

        highlightFirstTrade: function () {
            
            this.polylineOptions[0].strokeWeight = 3;
            this.polylineOptions[0].strokeColor = '#0a2071';
            this.currentLine = this.paths[0];
        },

        lineHighlight: function (tradeId) {
            
            this.polylineOptions[tradeId].strokeWeight = 3;
            this.polylineOptions[tradeId].strokeColor = 'red';
            this.currentLine = this.paths[tradeId];           
            for (let idx = 0; idx < this.trades.length; idx++) {
                if (tradeId !== idx) {
                    this.polylineOptions[idx].strokeWeight = 0.8;
                }
            }
        }
    }    
}

这是我的JS

<Polyline v-for="(line, index) in paths" :options="polylineOptions[index]" @click="tabOpen(index, line)" id="'line'+(index+1)" />

这就是我在 Vue 中创建线条的方式

谷歌地图 vuejs3

评论

1赞 yoduh 11/15/2023
显示所有相关代码。显示 polylineOptions 是如何定义的,它是如何使用的,等等。特别是既然你说它在 UI 中使用,你应该分享相关的 UI 代码。
0赞 Arjun Menon 11/15/2023
嗨,@yoduh我已经发布了我的代码。
0赞 yoduh 11/15/2023
这是您正在使用的库,是吗?它使用组件。那么,您的组件是围绕它的自定义包装器吗?我们仍然没有看到 polylineOptions 是如何实际使用的。即使您在父组件中更新它,错误也很容易出现在子组件中。请显示使用 .查看 MCVE 的概念并编辑您的问题以提供足够的代码来满足 MCVE 的要求GMapPolylinePolylinepolylineOptions
0赞 Arjun Menon 11/16/2023
嗨@yoduh我没有使用 fawmi,因为我在自定义标记方面遇到了问题。我指的是 npmjs.com/package/vue3-google-map#polyline。polylineOptions 映射到 vue 组件 ''' <Polyline v-for=“(line, index) in paths” :options=“polylineOptions[index]” @click=“tabOpen(index, line)” id=“'line'+(index+1)” /> '''
0赞 Arjun Menon 11/16/2023
这些是使用的软件包 “vue3-gmap-custom-marker”: “^1.0.0”, “vue3-google-map”: “^0.18.0”,

答: 暂无答案