我已经使用javascript对表格进行了迭代,因此我可以将数据用作变量,以便在Google地图上创建标记。我的地图和遍历表格的代码都有效,但我无法弄清楚如何在=INDEX(Sheet1!B:B,MATCH(Sheet2!A2,Sheet1!A:A,0))
变量中提供gridmap
值。我假设我需要在我的标记变量周围做一个for循环,我可能会想到,我很容易接受我的元素变量,并使它们可用作我的标记的变量。下面是我的代码,如果这有意义的话。我已经在这里工作了几个小时,现在是凌晨3:30;如果需要,我会在早上折射问题。谢谢。
这是更新且有效的代码:
我遍历DOM以仅从marker
抓取<tr>
元素。请注意tbody
部分 - 这会跳过第一个标题行。然后我通过针对tr:gt(0)
数组过滤掉markers
来创建一个新数组。我仍然需要清理一下,添加更多功能,比如聚类,但我现在非常高兴,希望这会对其他人有所帮助。
gdata
答案 0 :(得分:0)
您似乎也在使用Angular,并且id='gridmap'
div正在返回对象名称而不是内容。 div内容的性质看起来像问题的症结所以建议看看这个问题:How to show object property with Angularjs
从这里开始,如果你可以在Angular完成它之后生成看起来像这样的HTML,那么通过将属性插入到数据标记中来保持属性不在视图中:
<tr>
<td> ..... </td>
<td> ..... </td>
<td> ..... </td>
<td class='gridmap' data-lat='23.424' data-lng='-117.233'>a0</td>
</tr>
如果插入整个对象(包括大括号),则可能需要执行额外的JSON字符串化和解析,以便更好地避免这种情况。
请注意,HTML id标签应仅用于唯一的DOM元素,因此如果您有多个表行,则它应该是一个类(这也意味着相应地调整您的css)
现在我们可以使用jquery data来查询相同的HTML单元格标记并传递给grLat和grLng变量:
$('tr').each(function (i) {
var $tds = $(this).find('td').eq(8), // moved the eq(8) here
gLabel = htmlLabel[i],
gridmap = $tds.text(),
grLat = Number($tds.data('lat')), // get the lat data
grLng = Number($tds.data('lng')); // get the lng data
console.log(
'Marker:' + gLabel
+ '\nRow:' + (i + 1)
+ '\nGrid Map: ' + gridmap
+ '\nGrid lat: ' + grLat
+ '\nGrid lng: ' + grLng // check components
);
var marker = new google.maps.Marker({
position: {lat: grLat, lng:grLng}, // recomposed object
map: map,
label: labels[labelIndex++ % labels.length],
animation: google.maps.Animation.DROP
});
})
这应该让你处于更好的调试位置