Uncaught Type Ошибка загрузки Google Maps в пользовательском модуле Drupal 7 - PullRequest
0 голосов
/ 16 октября 2019

Итак, я работаю над сайтом Drupal 7 для пользовательской реализации Google Maps, потому что модуль GMAP не отвечает моим конкретным потребностям. У меня есть несколько видов, созданных с помощью модуля Views GeoJson, которые я хочу использовать с Google Map. Я тестировал код карты отдельно, и он работает, и я пытаюсь заставить тот же код работать в модуле Drupal 7, чтобы он работал на данном сайте.

Я получаю следующие две ошибкис моим кодом:

Uncaught TypeError: Cannot set property 'initMap' of undefined

В строке 6 скрипта;и

Uncaught (in promise) message: "GoogleMaps.initMap is not a function"

В строке 1 страницы, куда загружен пользовательский JS.

Я создал небольшой модуль, который создает блок, содержащий необходимый HTML-код, который необходимо добавить встраница вместе со скриптом Google Maps, а также функция, которую я пытаюсь добавить в качестве поведения Drupal. Я публикую отрывок здесь только для проверки правильности моего обратного вызова и идентификаторов элементов, так как это работает и загружает HTML.

drupal_add_js('https://maps.googleapis.com/maps/api/js?key=myKey&callback=GoogleMaps.initMap', array('type' => 'external', 'defer' => 'defer', 'scope' => 'footer','weight' => 10));
$block = array();
if ($delta == 'gmap_json') {
  $block['subject'] = '';
  $block['content'] = '<div id="json-map" style="width:1100px; height:500px; margin:auto;"></div>';

Javascript требует определения настраиваемой глобальной переменной, чтобы иметь доступ к обратному вызову Google Mapsвнутри моей анонимной функции.

var GoogleMaps = GoogleMaps || {};
var map, alumLayer, chapterLayer, assocLayer, userLayer;
(function ($, Drupal, google, GoogleMaps) {
Drupal.behaviors.gmap_json = {
attach : function (context, settings){

    GoogleMaps.initMap = function () {
    map = new google.maps.Map(document.getElementById('json-map'), {
      zoom: 4,
      center: {lat: 38.43, lng: -90}
    });
  alumLayer = new google.maps.Data();
}

}
};  
  alert('it works');
}(jQuery, Drupal, GoogleMaps));

К сожалению, мои навыки JS и JQuery более или менее исчерпаны, и я не уверен, что именно вызывает эти ошибки. У меня есть предчувствие, что это проблема масштаба. У меня были версии этой работы раньше, так что это еще более расстраивает. Заранее спасибо.

...