Ошибка при получении названия города из автозаполнения карт Google - PullRequest
0 голосов
/ 23 сентября 2019

У меня проблемы с получением названия города в событии place_changed автозаполнения карт Google.

Проблема в том, что я использую javascript для загрузки карты, а также автоматические предложения.

Мне нужно использовать город, выбранный из компонента карт Google, и использовать его в файле машинописи изJavaScript.

Я могу использовать функцию из maps.js в компонент машинописного текста, но не могу получить название города, так как событие, которое изменяется, не вызывает всю функцию.

Maps.js

function initMap(coords) {
    var city = '';
    var map = new google.maps.Map(document.getElementById('map'), {
        center: coords,
        zoom: 10,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
    });
    var marker = new google.maps.Marker({
        position: coords,
        map: map,
        zoom: 10,
    });

    var input = document.getElementById('city');

    var autocomplete = new google.maps.places.Autocomplete(input);

    // Bind the map's bounds (viewport) property to the autocomplete object,
    // so that the autocomplete requests use the current map bounds for the
    // bounds option in the request.
    autocomplete.bindTo('bounds', map);

    // Set the data fields to return when the user selects a place.
    autocomplete.setFields(
        ['address_components', 'geometry', 'icon', 'name']);

    var infowindow = new google.maps.InfoWindow();
    var infowindowContent = document.getElementById('infowindow-content');
    infowindow.setContent(infowindowContent);

    autocomplete.addListener('place_changed', function () {
        infowindow.close();
        marker.setVisible(false);
        var place = autocomplete.getPlace();

        if (!place.geometry) {
            // User entered the name of a Place that was not suggested and
            // pressed the Enter key, or the Place Details request failed.
            window.alert("No details available for input: '" + place.name + "'");
            return;
        }

        // If the place has a geometry, then present it on a map.
        if (place.geometry.viewport) {
            map.fitBounds(place.geometry.viewport);
        } else {
            map.setCenter(place.geometry.location);
            map.setZoom(17); // Why 17? Because it looks good.
        }
        marker.setPosition(place.geometry.location);
        marker.setVisible(true);

        var address = '';
        if (place.address_components) {
            address = [
                (place.address_components[0] && place.address_components[0].short_name || ''),
                (place.address_components[1] && place.address_components[1].short_name || ''),
                (place.address_components[2] && place.address_components[2].short_name || '')
            ].join(' ');
        }

        infowindowContent.children['place-name'].textContent = place.name;
        infowindow.open(map, marker);
    });
}

city.component.html


<div>
  <input id="city" type="text" class="form-control mr-5" placeholder="Enter a location" value="">
</div>
<div id="map"></div>
<div id="infowindow-content">
  <span id="place-name" class="title"></span>
  <span id="place-address"></span>
</div>

и мне нужно имя города на create-events.ts для сохранения в базе данных.Итак, структура:

  1. Сначала загружается файл create-events.page.ts, который содержит <ion-item>, который при нажатии загружает city.components.ts
  2. Затем город.component.ts вызывает функцию initMap (), которая находится в maps.js

И мне нужно извлечь название города из maps.js на страницу create-events.ts, если это возможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...