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

Ошибка карты Google: a имеет значение null

У меня есть программа, для которой я хочу использовать карты google. Проблема в том, что я получаю сообщение об ошибке, которое указывает, что null имеет значение a, где a - это var, используемый в google map api. Вот как я называю свою карту google:

//Creates a new center location for the google map
    var latlng = new google.maps.LatLng(centerLatitude, centerLongitude);

    //The options for the google map
    var myOptions = {
        zoom: 7,
        maxZoom: 12,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };

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

И вот как выглядит мой HTML-тег:

<div id = "map_canvas"></div>

Я получаю lat и lng на загрузку страницы по URL-адресу. Эти значения передаются правильно, поэтому я знаю, что это не проблема. Я думаю, что это связано с тем, что var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); не является правильным. Любые предложения?

EDIT: Вот сообщение об ошибке:

a имеет значение null fromLatLngToPoint (а = NULL) yg (a = null, b = Object {zoom = 7, maxZoom = 12, more...}) d (d = Документ Default.aspx? lat = 30.346317 & lng = 105.46313, f = [function()]) д (а = undefined) д() [Break On This Error] Qf (a) {a = af [9]; return a!= I? A:...); функция sg (a) {a [ic] & a [ic] Vb}

4b9b3361

Ответ 1

Убедитесь, что вы указали размер своего div, который содержит карту. Например:

<div id = "map_canvas" style="width: 500px;height: 500px;"></div>

Далее убедитесь, что ваша переменная карты определена в глобальной области и убедитесь, что вы выполнили инициализацию карты при загрузке dom (<body onload=yourinit()>)

Ответ 2

Вероятно, вы не слушаете событие onload, которое запускается, когда страница полностью загружена. В результате ваш script работает, но создаваемый div пока не существует. Используйте jQuery для прослушивания этого события, например:

$(document).ready(function () {
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
});

Если вы не хотите использовать jQuery, добавьте прослушиватель событий в body.onload

Ответ 3

Если бы была одна и та же проблема, и это я исправил ее для меня.

Дело в том, что у меня было 2 карты google на моем сайте - один в нижнем колонтитуле, а другой на странице контактов, но я назвал их обоими в одном JS файле, например:

var map1 = new google.maps.Map(document.getElementById("map-canvas-footer"), settings1);
var map2 = new google.maps.Map(document.getElementById("map-canvas"), settings2);

Но дело в том, что объект с id="map-canvas" находился только на странице контактов. Поэтому сначала вам нужно проверить, существует ли этот элемент на странице:

if ($("#map-canvas-footer").length > 0){
    var map1 = new google.maps.Map(document.getElementById("map-canvas-footer"), settings1);        
}

if ($("#map-canvas").length > 0){
    var map2 = new google.maps.Map(document.getElementById("map-canvas"), settings2);
}

Я надеюсь, что это тоже поможет кому-то другому;)

Ответ 4

Эта довольно загадочная ошибка означает, что script не может найти карту div. Это может произойти по нескольким причинам.

1. Вы используете неправильный идентификатор для ссылки на карту.

Проверьте свои идентификаторы (или классы) и убедитесь, что элемент, к которому вы обращаетесь, действительно существует.

2. Вы выполняете script перед тем, как DOM будет готов.

Вот пример jQuery. Обратите внимание, что мы инициализируем инициализацию документа, а не onDOMReady. Я взял на себя обязательство обернуть script в закрытии.

(function($) {
  function initialize() {
    var mapOptions = {
      center: new google.maps.LatLng(-34.397, 150.644),
      zoom: 8,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("map"),
        mapOptions);
  }
  $(document).ready(initialize);
})(jQuery)

Вы также можете использовать:

google.maps.event.addDomListener(window, 'load', initialize);

если вы предпочитаете решение Google.

Ответ 5

Это происходит, когда карта еще не загружена. Вы должны создать свою карту при загрузке JavaScript API Карт. Выполнение функции для инициализации вашей карты только тогда, когда API полностью загрузил ее, передав ее в параметр "обратного вызова" в загрузочном файле Maps API.

function initialize() {
  var mapOptions = {
    zoom: 8,
    center: new google.maps.LatLng(-34.397, 150.644),
    mapTypeId: google.maps.MapTypeId.ROADMAP
  }
  var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
}

function loadScript() {
  var script = document.createElement("script");
  script.type = "text/javascript";
  script.src = "http://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&sensor=TRUE_OR_FALSE&callback=initialize";
  document.body.appendChild(script);
}

window.onload = loadScript;

Это фактически в Документах API Карт здесь. Надеюсь, это поможет!

Ответ 6

Убедитесь, что ваш холст div (Div, связанный с картой) существует. Иногда, если мы переименуем атрибут div id. Затем он создает проблему, поскольку она не получает div canvas.

Ответ 7

Я исправил удаление моего свойства "style" из тега "div", объявив его правильно, в файле css

Ответ 8

Я получил эту ошибку один раз. Убедитесь, что карта script работает только на страницах с использованием карты. Вы можете проверить, существует ли карта, используя "if". Что-то вроде этого:

if ($('mapClass').length>0) { // here you run the google maps functions }

См. ya

Ответ 9

Решено, тип карты google - ошибка, убедитесь, что вы возвращаете объект var map = document.getElementById('map-canvas'), используя функцию alert (map). Проверьте имя идентификатора контейнера div так же, как указано в getElementByid.

Я также застрял с тем же типом ошибки, исправил его, проверив getElementByid ('map-canvas'). Пример кода введите описание ссылки здесь