Не является ли ошибка функции в googlemaps api javascript - PullRequest
0 голосов
/ 23 мая 2018

Я использую Google API для показа текущего положения автомобиля в одной из моих функций. У меня есть такой код

 function fromLatLngToDivPixel(map, latLng) {
    var overlay = new google.maps.OverlayView();
    overlay.draw = function () { };
    overlay.setMap(map);
    var point = overlay.getProjection().fromLatLngToDivPixel(latLng);
    overlay.setMap(null);
    overlay = null
    return point;
}

, но при выполнении этого кода я получаю сообщение об ошибке overlay.setMap(null);

и я не могу выполнить это.ошибка говорит

Uncaught TypeError: this.pa.remove не является функцией

да, я знаю, что очень сложно отвечать на подобные вопросы, но если только кто-нибудьесть идея об этой ошибке?

я прилагаю изображение для лучшей справки. enter image description here

и когда я прокомментировал эту строку, мой код работает правильно,

могу ли я использовать эту функцию без этого -> overlay.setMap(null);

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Согласно документации для OverlayView необходимо реализовать 3 метода:

Необходимо реализовать три метода: onAdd (), draw () и onRemove ().

  • В методе onAdd () вы должны создать объекты DOM и добавить их как дочерние элементы панелей.
  • В методе draw () вы должны расположить эти элементы.
  • В методе onRemove () необходимо удалить объекты из DOM.

Вы не реализуете метод onRemove (или onAdd).

function fromLatLngToDivPixel(map, latLng) {
  var overlay = new google.maps.OverlayView();
  overlay.draw = function() {};
  overlay.onAdd = function() {};
  overlay.onRemove = function() {};
  overlay.setMap(map);
  var point = overlay.getProjection().fromLatLngToDivPixel(latLng);
  overlay.setMap(null);
  overlay = null
  return point;
}
0 голосов
/ 23 мая 2018

Похоже, setMap (null) используется для удаления маркеров.https://developers.google.com/maps/documentation/javascript/markers#remove

Таким образом, если только это не является вашим намерением, код должен работать нормально без вызова setMap (null) в вашем коде.

Я бы изменил его на

function fromLatLngToDivPixel(map, latLng) {
    var overlay = new google.maps.OverlayView();
    overlay.draw = function () { };
    overlay.setMap(map);
    return overlay.getProjection().fromLatLngToDivPixel(latLng);
}

Вы также можете найти здесь полезную информацию: почему setMap (null) не работает google maps api v3?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...