Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Vuejs中使用Google Map侦听映射事件_Javascript_Google Maps_Vue.js - Fatal编程技术网

Javascript 在Vuejs中使用Google Map侦听映射事件

Javascript 在Vuejs中使用Google Map侦听映射事件,javascript,google-maps,vue.js,Javascript,Google Maps,Vue.js,当我尝试在vue js上应用Google地图时遇到问题。 我的问题是在绘制pin并拖动它时侦听事件。单击接点时,坐标值将显示在LatLng文本框中,然后在接点移动后,文本框中的值将自动更改,无需先单击 这是我的程序的一个片段 <template> <div class="row justify-content-center"> <div class="col-md-6"> <div class="card"

当我尝试在vue js上应用Google地图时遇到问题。
我的问题是在绘制pin并拖动它时侦听事件。单击接点时,坐标值将显示在LatLng文本框中,然后在接点移动后,文本框中的值将自动更改,无需先单击

这是我的程序的一个片段

<template>
    <div class="row justify-content-center">
        <div class="col-md-6">
            <div class="card">
                <div class="card-header">Location</div>
                <div class="card-body">
                    <google-map-loader :map-config="mapConfig" :map-center="'Bali'">
                        <template slot-scope="{google, map}">
                            <google-map-drawing-manager
                                    :google="google"
                                    :map="map"
                                    :drawing-modes="['marker']"
                                    :marker-options="markerOptions"
                                    :control="true">
                                {{drawingManagerListener}}
                            </google-map-drawing-manager>
                        </template>
                    </google-map-loader>
                    <div class="form-group row">
                        <label class="col-sm-3">Latitude</label>
                        <div class="col-sm-9">
                            <input type="text" v-model="latitude" class="form-control">
                            <div class="invalid-feedback"></div>
                        </div>
                    </div>
                    <div class="form-group row">
                        <label class="col-sm-3">Longitude</label>
                        <div class="col-sm-9">
                            <input type="text" v-model="longitude" class="form-control">
                            <div class="invalid-feedback"></div>
                        </div>
                    </div>
                </div>
                <div class="card-footer">
                    <a class="btn btn-outline-success"><font-awesome-icon :icon="['fas', 'save']" /> Simpan</a>
                    <a class="btn btn-outline-danger"><font-awesome-icon :icon="['fas', 'times-circle']" /> Cancel</a>
                </div>
            </div>
        </div>
    </div>
</template>

<script>
    import {EventBus} from "../../../utils/event-bus";
    import GoogleMapLoader from "../../../components/maps/GoogleMapLoader";
    import { mapSettings } from "../../../utils/mapSettings";

    import GoogleMapDrawingManager from "../../../components/maps/GoogleMapDrawingManager";

    export default {
        components: {
            GoogleMapDrawingManager, GoogleMapLoader
        },
        data() {
            return {
                latitude: '',
                longitude: '',
            }
        },

        computed: {
            mapConfig() {
                return {
                    ...mapSettings
                };
            },
            markerOptions(){
                return {
                    draggable: true
                }
            },
            drawingManagerListener() {
                EventBus.$on('drawingManager',drawingManager => {
                    google.maps.event.addListener(drawingManager, 'markercomplete', function (marker) {
                        marker.addListener('click', function (coords) {
                            EventBus.$emit('coords', coords);
                        });

                        marker.addListener('rightclick', function (event) {
                            marker.setMap(null);
                        });
                    });

                });
                EventBus.$on('coords', coords => {
                    this.latitude = coords.latLng.lat();
                    this.longitude = coords.latLng.lng();
                });
            },

        }
    }
</script>

<style scoped>

</style>

地方
{{drawingManagerListener}}
纬度
经度
辛潘
取消
从“../../../utils/event bus”导入{EventBus};
从“../../../components/maps/GoogleMapLoader”导入GoogleMapLoader;
从“../../../utils/mapSettings”导入{mapSettings};
从“../../../components/maps/GoogleMapDrawingManager”导入GoogleMapDrawingManager;
导出默认值{
组成部分:{
GoogleMapDrawingManager,GoogleMapLoader
},
数据(){
返回{
纬度:'',
经度:'',
}
},
计算:{
mapConfig(){
返回{
…地图设置
};
},
标记选项(){
返回{
德拉格布尔:是的
}
},
drawingManagerListener(){
EventBus.$on('drawingManager',drawingManager=>{
google.maps.event.addListener(drawingManager,'markercomplete',函数(marker){
marker.addListener('click',函数(coords){
事件总线$emit('coords',coords);
});
marker.addListener('rightclick',函数(事件){
marker.setMap(空);
});
});
});
EventBus.$on('coords',coords=>{
this.latitude=coords.latLng.lat();
this.longide=coords.latLng.lng();
});
},
}
}
上面的代码能够运行,只是当拖动pin时,文本框中的值不会自动更改。我希望你理解我的意思,并能解决我的问题。


谢谢

我忘了在标记中添加“dragend”事件侦听器

drawingManagerListener() {
            EventBus.$on('drawingManager',drawingManager => {
                google.maps.event.addListener(drawingManager, 'markercomplete', function (marker) {
                    marker.addListener('click', function (coords) {
                        EventBus.$emit('coords', coords);
                    });

                    marker.addListener('dragend', function (event) {
                        EventBus.$emit('coords', coords);
                    });

                    marker.addListener('rightclick', function (event) {
                        marker.setMap(null);
                    });
                });

            });
            EventBus.$on('coords', coords => {
                this.latitude = coords.latLng.lat();
                this.longitude = coords.latLng.lng();
            });
        },

因此,通过代码,我可以在单击并拖动标记时处理事件。

添加正确的侦听器怎么样??您为单击和右键单击添加了侦听器。我看不到拖放或拖放结束或其他任何侦听器。@MrUpsidown问题解决后,我忘记向标记事件侦听器添加“dragend”
drawingManagerListener() {
            EventBus.$on('drawingManager',drawingManager => {
                google.maps.event.addListener(drawingManager, 'markercomplete', function (marker) {
                    marker.addListener('click', function (coords) {
                        EventBus.$emit('coords', coords);
                    });

                    marker.addListener('dragend', function (event) {
                        EventBus.$emit('coords', coords);
                    });

                    marker.addListener('rightclick', function (event) {
                        marker.setMap(null);
                    });
                });

            });
            EventBus.$on('coords', coords => {
                this.latitude = coords.latLng.lat();
                this.longitude = coords.latLng.lng();
            });
        },