Есть ли способ включить метод прототипа объекта в обратный вызов карты Google? - PullRequest
0 голосов
/ 14 июня 2019

Я создаю карту с помощью разработчика Google maps, проблема в том, что мне нужно построить javascript объектным способом, и когда я вызываю Google API в теге script, это простая функция в обратном вызове.

<script src="https://maps.googleapis.com/maps/api/js?key={ApiKey}&callback=initMap"
async defer></script>

Как и выше, здесь по умолчанию установлена ​​initMap. Я хочу установить вызываемую функцию равной mapInit, как в коде, который я включил.

Проблема в том, что карта не отображается, ширина и высота хороши в CSS, но она не будет инициализирована, если функция initMap () {} 'находится в прототипе моего объекта Map.

И, конечно, когда функция находится за пределами, она работает хорошо. Итак, я совершенно заблудился, и если есть какие-то решения для решения моей проблемы, я бы с радостью принял их! Спасибо

'use strict';

var Map = function () {
    this.mapInit();
};

Map.prototype.mapInit = function () {

};
 function initMap() {
        var map;
        map = new google.maps.Map(document.getElementById('map'), {
            center: {lat: 47.2173, lng: -1.5534},
            zoom: 10
}

Заранее спасибо.

1 Ответ

0 голосов
/ 14 июня 2019

Ваша функция обратного вызова должна быть доступна глобально, чтобы API-интерфейс Карт мог ее видеть. Вы можете инициализировать Map в этой функции, хотя:

var Map = function () {
  this.mapInit();
};

Map.prototype.mapInit = function () {
  // do the stuff you want to do
};

function initMap() {
  new Map();
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...