javascript - Google map JavaScript - 将多个标记添加到一张 map

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

我在 JavaScript 中为 Google map 标记设置事件处理程序时遇到困难。下面是我的代码:

var map = new google.maps.Map(document.getElementById('map-canvas'), {
                zoom: 8,
                center: {lat: -35, lng: 149}
            });
            for (var i = 0; i < basketballCourts.length; i++) {
                var marker = new google.maps.Marker({
                    position: new google.maps.LatLng(basketballCourts[i].latitude, basketballCourts[i].longitude),
                    map: map,
                    title: 'Hello World!'
                });
                marker.set("data-index", i);
                google.maps.event.addListener(marker, 'click', function() {
                    console.log(marker.get("data-index"));
                });
            }

您会注意到标记有一个单击事件。但是,所有标记的点击事件都是相同的。每次标记点击都应该记录不同的数字,但无论我点击哪个标记,我都会得到相同的响应。

我不知道如何解决这个问题。

最佳答案

发生的情况是您循环遍历所有篮球场,为每个标记创建一个事件监听器。这一切都很好。然而,该事件监听器函数如下所示:

console.log(marker.get("data-index"));

该函数是在响应标记单击时执行的,而不是在您定义它时执行。函数执行时 marker 的值将是它在所有篮球场循环结束时的值。

使用@MiltoxBeyond的建议,尝试使用this.get("data-index")

关于javascript - Google map JavaScript - 将多个标记添加到一张 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31213479/

相关文章:

javascript - jQuery 附加事件绑定(bind)

javascript - ( Protractor )检查单击时是否禁用输入?

javascript - 判断字符串是像素还是百分比,然后除以二

javascript - 如何在谷歌地图中使用邮政编码查找位置

google-maps - 如何使用复选框打开和关闭 Google map 图层?

javascript - JS数组到PHP并使用PDO更新MYSQL中的表

php - CakePHP:在 View 和元素中嵌入 CTP 文件名和路径

javascript - 必填字段验证在 JQuery Popup MVC 4 中不起作用

javascript - 动态更新从 AJAX 查询返回的 JSON 数组

google-maps - 使用 Selenium IDE 单击 Google map