Геокодер получает широту и долготу с адреса и передает их маркеру - PullRequest
0 голосов
/ 18 марта 2020

Я хотел бы получить лат и lng из адреса вместо того, чтобы получать их напрямую из json данных, как у меня сейчас.

Мой текущий код

const createMarkers = (markersData) => markersData.branches.map((location) => {
        const { type, lat, lng, name } = location;
        const icon = createMarkerIcon(type);

        return new google.maps.Marker({
            position: {
                lat,
                lng,
            },
            title: name,
            icon,
            isToggled: false,
            customData: location,
        });
    });

И Я хочу что-то вроде этого

const createMarkers = (markersData) => markersData.branches.map((location) => {
        const { type, name, street, city } = location;
        const icon = createMarkerIcon(type);
        const address = street + ', ' + city;
        var loc = new Array();

        const geocoder = new google.maps.Geocoder();

        geocoder.geocode({ 'address': address, 'region': 'cz' }, function (results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                loc[0] = results[0].geometry.location.lat();
                loc[1] = results[0].geometry.location.lng();
            }
            else {
                return ("Error: " + status);
            }
        });

        return new google.maps.Marker({
            position: {
                lat: loc[0],
                lng: loc[1],
            },
            title: name,
            icon,
            isToggled: false,
            customData: location,
        });
    });

Что теоретически это даст мне широту и долготу от адреса, и тогда я смогу передать их маркеру. К сожалению, в действительности это дает мне неопределенные результаты для переменной lo c. Любая помощь приветствуется. Спасибо!

...