Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I'd like to update my data values in real time when using Google Map Places autocomplete service.

I am struggling accessing this inside the google.maps.event.addListener as follows:

export default {
    data : function() {
        return {
            name : '',
            lat : 0,
            long : 0,
        }
    },
    mounted : function() {
        var input = this.$refs.searchTextField;
        var autocomplete = new google.maps.places.Autocomplete(input);

        google.maps.event.addListener(autocomplete, 'place_changed', function() {
            let place = autocomplete.getPlace();
            this.$set(this, 'name', place.name);
            this.$set(this, 'lat', place.geometry.location.lat());
            this.$set(this, 'long', place.geometry.location.lng());
        });
    },
}

Uncaught TypeError: this.$set is not a function

EDIT: found a beginning of an answer by transforming the function into an arrow function to get the Vue instance as follows:

google.maps.event.addListener(autocomplete, 'place_changed', (event) => {
    let place = autocomplete.getPlace();
    this.$set(this, 'name', place.name);
    this.$set(this, 'lat', place.geometry.location.lat());
    this.$set(this, 'long', place.geometry.location.lng());
});

But now it works only once.. when I would like reactivity every time I select a new city..


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
3.5k views
Welcome To Ask or Share your Answers For Others

1 Answer

等待大神答复

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...