Google Map API v3, изменение типа карты путем нажатия на ссылку: «карта не определена» - PullRequest
1 голос
/ 23 февраля 2012

Я использую самый простой пример из официальной документации:

function initialize() {
  var mapCent = new google.maps.LatLng($shirota, $dolgota);
  var myOptions = {
    zoom: $uvelichenie,
    center: mapCent,
    mapTypeId: google.maps.MapTypeId.SATELLITE
};

var map = new google.maps.Map(
      document.getElementById("map_canvas"),
      myOptions);
}

Я добавил это для динамического изменения типа карты, как описано в официальной документации:

</p>

<pre><code>function perekluchitDor() {
    map.setMapTypeId(google.maps.MapTypeId.ROADMAP);
}
</code>

Это в href в части HTML:

onclick="perekluchitDor();">

Все довольно просто, но все равно не работает. Все, что я вижу, это ошибка "карта не определена", когда я нажимаю на ссылку.

Интересно, что я здесь не так делаю?

Ответы [ 2 ]

1 голос
/ 02 сентября 2012
var name1 = "value";
name1 = "value";

Используется вне пользовательской функции, обе они выполняют одно и то же.Оба создают глобальную переменную.Глобальная переменная может быть доступна из любой функции в любом окне или фрейме, который загружен в данный момент.Если мы используем переменную name1 внутри определенной пользователем функции, она является локальной в области видимости, мы можем видеть ее только внутри функции.

Вам нужно удалить только переменную, указанную в операторе map.Вам не нужно объявлять карту вне ваших функций.

1 голос
/ 28 февраля 2012

Это проблема переменной области. Вам нужно объявить map вне ваших функций, как показано ниже (1-я строка кода).

      var map;  
      function initialize() {
          var mapCent = new google.maps.LatLng($shirota, $dolgota);
          var myOptions = {
            zoom: $uvelichenie,
            center: mapCent,
            mapTypeId: google.maps.MapTypeId.SATELLITE
          };

          map = new google.maps.Map(
            document.getElementById("map_canvas"),
            myOptions);
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...