【问题标题】:Google Maps Markers marker.setMap(null) not a functionGoogle Maps Markers marker.setMap(null) 不是函数
【发布时间】:2020-10-21 06:23:41
【问题描述】:

我知道这个问题与很多其他问题相似。

以下问题。我用数组保存 Google 地图标记。

如果我想更新它们,我无法编写 marker.set(Something)。我必须写 marker.j.map = null;

  • 我错过了什么吗?

例如

var markers = [];

function doAddMarkers(){
  markers.push(new google.maps.Marker({
           [...]
    }).addListener('click', (function (i) {
           [...]
    }).bind(this, "xxx"), false));
}

function DoStartHl(pElement) {
 for (var i = 0; i < markers.length; i++) {
  if (pElement !== i && markers[i].j.animation !== null) {
   markers[i].j.animation = null;
  }
 }
 if (markers[parseInt(pElement.id)].j.animation === null) {
 markers[parseInt(pElement.id)].j.animation = google.maps.Animation.BOUNCE;
 }
}
更新

解决方法是在当前标记和setter之间添加.j.

【问题讨论】:

标签: javascript google-maps google-maps-api-3 maps


【解决方案1】:

您正在使用索引遍历标记数组。因此,未定义标记。您应该通过标记数组中的索引来引用标记

function DoClearMarkers() {
  for (var i = 0; i < markers.length; i++) {
    markers[i].j.map = null;
    markers[i].map = null;
    // marker.setMap(null); <= Won't work. ".setMap() is not a function"
    //the above won't work because `marker` is not defined.
    //instead, reference the marker by its index in the array:

    markers[i].setMap(null);
  }
  markers = [];
}

【讨论】:

  • 还是不行。我用 marker[markser.lenght] = marker; 添加了标记
  • @GreilOmatics - 所以检查你的迭代中的内容......并定义“不工作” - 相同的错误或???
  • 我为数组添加了控制台输出。这对你有帮助吗
  • 也许是markers[i].j.setMap(null) ??你给我们的东西真的很难说。目前还不清楚你想做什么。但是,我上面的回答应该可以解决您的错误,不是吗?
  • 我在调试控制台中尝试过。 setMap 不是函数。
猜你喜欢
  • 2012-11-10
  • 2011-04-08
  • 1970-01-01
  • 2016-05-24
  • 1970-01-01
  • 1970-01-01
  • 2012-06-09
  • 2016-08-10
  • 1970-01-01
相关资源
最近更新 更多