Увеличить в поисковой (маркер) позиции Google Maps API - PullRequest
0 голосов
/ 20 марта 2019

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

Пример кода

function initMap() {
    var map = new google.maps.Map(document.getElementById('map'), {
      zoom: 10,
      center: {lat: 52.0, lng: 1.0}
    });
    var geocoder = new google.maps.Geocoder();

    document.getElementById('submit').addEventListener('click', function() {
      geocodeAddress(geocoder, map);
    });
  }

  function geocodeAddress(geocoder, resultsMap) {
        var address = document.getElementById('address').value;
        geocoder.geocode({'address': address}, function(results, status) {
            if (status === 'OK') {
            resultsMap.setCenter(results[0].geometry.location);

                var marker = new google.maps.Marker({
                    map: resultsMap,
                    position: results[0].geometry.location
        });

        map.setZoom(14);
        map.panTo(Marker.position);

      } 
      else {
        alert('clever text here: ' + status);
      }
    });

Любые идеи будут очень признательны.

1 Ответ

1 голос
/ 16 июля 2019

setZoom (14) внутри функции geocodeAddress () не работает, так как вы вызвали ее из-за неправильной ссылки на объект карты.Вы должны вызвать resultsMap.setZoom (14) вместо map.setZoom (14).

Переменная "map" объявлена ​​внутри функции initMap () и передается в качестве аргумента, когдавызывается функция geocodeAddress (): geocodeAddress(geocoder, map).

Теперь в определении метода geocodeAddress () ссылка на объект карты изменяется на "resultsMap" имя параметра: function geocodeAddress(geocoder, resultsMap){...},Вот почему вам нужно использовать resultsMap.setZoom(14) внутри функции geocodeAddress ().

Вот рабочий пример в JSFiddle .

Надеюсь, это поможет!

...