Подтвердить что ты не робот

Google Maps v3 - Как сосредоточиться на использовании адреса при инициализации?

Используя Google Maps API v3, есть ли способ установить центр карты при инициализации? У меня есть обходной путь с использованием этого кода:

var geocoder;
  var map;
  function initialize() {
    geocoder = new google.maps.Geocoder();
    var latlng = new google.maps.LatLng(-34.397, 150.644);
    var myOptions = {
      zoom: 8,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    codeAddress('germany');
  }

  function codeAddress(address) {
    geocoder.geocode( { 'address': address}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        map.setCenter(results[0].geometry.location);
        var marker = new google.maps.Marker({
            map: map,
            position: results[0].geometry.location
        });
      }
    });
  }

Единственная проблема заключается в том, что при инициализации он центрирует его на "latlng" в течение секунды. Я не могу понять, как установить центр в "myOptions". Я, хотя я мог бы вернуть "результаты [0].geometry.location" из функции codeAddress и передать его в myOptions, но это не сработает.

Спасибо за любую помощь.

Обновление Так как я вообще не могу удалить "центр", мне интересно, есть ли способ передать адрес параметрам.

В Google API:

Чтобы инициализировать карту, мы сначала создаем объект опций карты, чтобы содержать переменные инициализации карты. Этот объект не построен; вместо этого он создается как литерал объекта. Требуется два параметры для каждой карты: центр и зум.

4b9b3361

Ответ 1

Ну, простым решением может быть инициализация карты в вашей функции codeAddress:

var geocoder, map;

function codeAddress(address) {
    geocoder = new google.maps.Geocoder();
    geocoder.geocode({
        'address': address
    }, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            var myOptions = {
                zoom: 8,
                center: results[0].geometry.location,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            }
            map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

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

Это должно решить проблему.