Как получить параметры маркера при нажатии на маркер?

#angular #ionic3 #google-maps-markers #ionic4

#angular #ionic3 #google-карты-маркеры #ionic4

Вопрос:

Я работаю в ionic 4 и использую Google maps api. У меня есть пара маркеров, которые я создаю следующим образом:

 setRestaurantMarkers() {
    const markers = [];
    this.singletonService.restaurants.results.map(restaurant => {
        const restaurantPosition = {lat: restaurant['Restaurant'].Lat, lng: restaurant['Restaurant'].Long};

        this.markerOptions = new Marker({
            position: restaurantPosition,
            title: restaurant['Restaurant'].Name,
            category: restaurant['RestaurantCategory'].Name,
            map: this.map
        });

        this.marker = new google.maps.Marker(this.markerOptions);
        this.marker.addListener('click', (marker) => {
            // Set destination for navigate button
            this.destination = [marker.latLng.lat(), marker.latLng.lng()];
            console.log(marker.latLng.lat(), marker.markerOptions);
            this.markerClicked = true;
        });
    });
}
  

Но я не могу получить markerOptions подробную информацию при нажатии на маркер. Я хотел бы иметь это markerOptions возможно ли, что при нажатии на маркер я ничего не могу найти по этому поводу.

Ответ №1:

назначьте параметры маркера в переменной вместо свойства класса

 setRestaurantMarkers() {
    const markers = [];
    this.singletonService.restaurants.results.map(restaurant => {
        const restaurantPosition = {lat: restaurant['Restaurant'].Lat, lng: restaurant['Restaurant'].Long};

        const markerOptions = new Marker({ // make it as const
            position: restaurantPosition,
            title: restaurant['Restaurant'].Name,
            category: restaurant['RestaurantCategory'].Name,
            map: this.map
        });

        this.marker = new google.maps.Marker(markerOptions);
        this.marker.addListener('click', (marker) => {
            // Set destination for navigate button
            this.destination = [marker.latLng.lat(), marker.latLng.lng()];
            console.log(marker.latLng.lat(), markerOptions); // get directly
            this.markerClicked = true;
        });
    });
}