【问题标题】:How can Google Maps markers be used in objects?如何在对象中使用 Google 地图标记?
【发布时间】:2012-09-24 21:49:12
【问题描述】:

我有一个这样定义的数组“markerGroups”:

var markerGroups = {"foo": [], "bar": [], "foobar": []};

此数组用于存储 Google 地图中的所有标记。如您所见,我有三个类别来存储标记。一个标记只会存在于一个类别中,永远不会存在于任何其他类别中。 每个标记也由唯一的 ID 标识,例如 ID 可以是 1422。

现在我想以这样一种方式将标记添加到这个组中,这样我就可以通过做例子来达到它

console.log(markerGroups.foo[1422]);

即使这是该类别中的唯一标记。我还必须能够将其从类别中完全删除。

我试图通过这样定义 markerGroups 来实现这一点:

var markerGroups = {"foo": {}, "bar": {}, "foobar": {}};

这一行在一个函数中,其中marker被定义为marker,并且category被传入函数,告诉函数将marker存放在哪里。

markerGroups[category][marker.ID] = marker;

这很好用,只是标记现在不会出现在我的地图中。

任何想法为什么或如何以更好的方式完成?

【问题讨论】:

  • 您没有提供足够的详细信息来说明为什么markerGroups[category][marker.ID] = marker; 不会出现在地图上。这种差异没有任何东西可以阻止它工作。

标签: javascript arrays google-maps object google-maps-markers


【解决方案1】:

标记是简单的 JS 对象,可以像任何 JS 对象一样进行操作。

您可以控制标记是否显示在地图上的唯一方法是通过它的 setMap() 函数。因此,请检查您的代码,看看您是否为要在地图上显示的标记调用 setMap(your_map)。另请注意,必须设置一些属性(例如位置)才能显示标记。

所以,不用担心简单的 JS 对象操作,只要正确初始化,它不会与 Marker 可见性交互。

当然,这是理论上的观点,如果你做了这一切还是不行,你必须提供一些额外的细节和代码。

【讨论】:

  • 我忽略了我有一个markerclusterer(这实际上是这里的问题),因为我认为这个问题与我试图使用对象而不是“干净”数组有关。您的回答使我朝着正确的方向前进,也使我相信对象应该可以正常工作。谢谢!
猜你喜欢
  • 2013-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-25
  • 1970-01-01
  • 2020-03-10
  • 2018-04-17
  • 2016-06-09
相关资源
最近更新 更多