【问题标题】:Array packing and unpacking in JavaScriptJavaScript 中的数组打包和解包
【发布时间】:2015-07-21 04:40:02
【问题描述】:

我正在使用 Google maps api,我想将 lat-lon、infowindow(位置的地址)等 google 标记信息打包到一个数组中。稍后我想将数组解包到不同的函数中,以便将收集到的信息推送到数据库中。我可以打包经纬度信息,因为它们是自动可用的。但是对于地址(信息窗口),我必须在标记中创建一个属性,然后将其存储在容器中。我无法将其存储在容器中。在这方面的任何帮助将不胜感激。

【问题讨论】:

  • @Abhinav:我尝试过使用包含容器的字符串 - div id 。但我不知道其中存储地址的格式。字符串是我的标记的属性。
  • 向我们展示您的代码,这将为我们提供解决您问题的切入点。这就是 SO 的工作原理。
  • @Abhinav :我的代码类似于 Corey Hoffman 给出的答案,请阅读 cmets 以了解我正在尝试做的事情。提前致谢。
  • 请完成您的问题。把你的代码看起来像什么(最好是一个 Minimal, Complete, Tested and Readable example 来证明你的问题)和你在问题本身中尝试了什么。

标签: javascript jquery arrays database google-maps-api-3


【解决方案1】:

您是否尝试过以下方法:

  1. 在全局某处创建关联数组:markers = {};
  2. 在创建标记对象时将必要的信息附加到它:

    var marker = new google.maps.Marker({
        map: map,
        position: latlng,
     });
    
     // The following block adds unique information to the marker object
     // Used to identify individual markers
     marker.id = marker_id; //Some unique id might be useful to store in the marker
     marker.infowindow = infowindow;
     marker.address = "Some Address";
    
  3. 使用唯一标识符将创建的标记对象添加到关联数组中:markers[marker_id] = marker;

遵循上述模式应该允许您创建一个可引用和可管理的标记对象数组。

【讨论】:

  • 我写过类似的代码。但是地址是动态的,即每次拖动标记时都会占用新地址。另外,根据情况我有 N 个标记,如何打包每个传入标记的信息?
  • 如果您将该代码放在生成标记的任何位置,它会将所有 N 个标记添加到由您创建的某个唯一 ID 标识的数组中。至于动态更改地址,您可以将以下事件处理程序添加到标记:google.maps.event.addListener(marker, 'dragend', function() { markers[marker.id].address = "new address"; // or markers[marker.id].infowindow = new infowindow }
  • 我编写了完全相同的代码 - 新地址是随每个新位置动态生成的,即数组应该在完成 dragend 事件后自动拾取每个新标记的地址。
猜你喜欢
  • 2011-01-16
  • 1970-01-01
  • 1970-01-01
  • 2017-10-17
  • 1970-01-01
  • 2019-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多