如何在循环中生成唯一的字符串对象

时间:2014-06-19 00:31:32

标签: javascript string google-maps google-maps-markers

我遇到了一个问题,我不确定如何面对它。

我有一个数组(来自数据库的一组记录)和一个循环来遍历数组。在循环中,我使用Google Maps api创建标记对象。标记采用具有各种信息(位置,相关地图等)设置的键值对。它还有一个标题,我想指定一个特定的文本来包含特定于该标记的信息。然而,当我遍历代码时,似乎我总是最终得到所有标记引用的相同字符串(即,点击时只显示一个标题消息,它只与单个标记有关,尽管它出现在所有标记。

我的代码是:

   for (record = 0; record < numRecords; record++){

        zomLat =parseFloat(data[record][1]);
        zomLng = parseFloat(data[record][2]);
        posterName = data[record][3];
        headline = data[record][7];
        details = data[record][8];
        type = data[record][4];
        num = data[record][5];
        timePosted = data[record][6];
        mapLabel = data[record][9];     //this is the key info I'd like added to each marker
        //creates a position object for the marker
        zomLATLNG = getCustomLatLng(Lat,Lng);


        marker = new google.maps.Marker(

                                   {
                                   position: zomLATLNG,
                                   map: window.map,
                                   icon: window.Icon,
                                   draggable:true,
                                   title://How can I add a unique string here?
                                   });


   //and add a click listener
   google.maps.event.addListener(marker, 'click', function()
                                 {
                                 alert(marker.title);

                                 });

   window.zomMarkers.push(marker);

   }

我认为我需要做的是在每个循环中,创建一个新的独立字符串对象(基本上是由data [record] [0]定义的mapLabel对象的副本。但是经过几个小时的尝试,我可以&#39似乎做对了。

提前感谢任何想法或帮助。

1 个答案:

答案 0 :(得分:0)

正如Dr.Molle所建议的非常有帮助,使用this.title而不是marker.title解决了这个问题。我在分配&#39;标题时直接使用了mapLabel变量。标记选项的关键。

这里的最终代码(非常感谢Dr.Molle!):

 for (record = 0; record < numRecords; record++){

        zomLat =parseFloat(data[record][1]);
        zomLng = parseFloat(data[record][2]);
        posterName = data[record][3];
        headline = data[record][7];
        details = data[record][8];
        type = data[record][4];
        num = data[record][5];
        timePosted = data[record][6];
        mapLabel = data[record][9];     //this is the key info I'd like added to each marker
        //creates a position object for the marker
        zomLATLNG = getCustomLatLng(Lat,Lng);


        marker = new google.maps.Marker(

                                   {
                                   position: zomLATLNG,
                                   map: window.map,
                                   icon: window.Icon,
                                   draggable:true,
                                   title:mapLabel
                                   });


   //and add a click listener
   google.maps.event.addListener(marker, 'click', function()
                                 {
                                 alert(this.title);

                                 });

   window.zomMarkers.push(marker);

   }