javascript - 无论单击哪一个,都会打开最后一个 Google map 标记的信息窗口

标签 javascript asp.net-mvc google-maps google-maps-api-3 google-maps-markers

我正在尝试在 ASP.NET MVC 项目中运行 google map api,并且我正在尝试在每个标记上添加带有信息窗口的标记。不幸的是,当我单击一个标记时,无论我单击哪个标记,最后添加的标记上的信息窗口都会打开。

这是我的代码:

<script>
        var map;
        function initMap() {
            map = new google.maps.Map(document.getElementById('map'), {
                center: { lat: 39.5, lng: -98.35 },
                zoom: 3
            });
            @foreach (var item in Model) {
                 <text>
                    var marker = new google.maps.Marker({
                      map: map,
                      position: { lat: @item.Lat, lng: @item.Lng },
                      title: '@item.Name'
                    });

                    marker.info = new google.maps.InfoWindow({
                        content: `<div id="content"> <h1 id="firstHeading" class="firstHeading">Test</h1> <div id="bodyContent">Test </div> </div>`
                    });

                    marker.addListener('click', function () {
                        marker.info.open(map, marker);
                    });

                </text>
}
        }
    </script>

最佳答案

抱歉删除了之前的答案..

我只记得我相信当我做我的项目时,我必须创建一个createWindow(marker, content)函数并从循环中调用它,而不是直接在循环内创建我的窗口

重要的是,您的事件监听器也是在此方法中创建的,而不是在循环内创建的

关于javascript - 无论单击哪一个,都会打开最后一个 Google map 标记的信息窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61683294/

相关文章:

javascript - React Native FlatList的scrollToEnd()不起作用

javascript - 在angularjs中填充下拉选择

c# - 如何正确地对该方法进行单元测试?

c# - 在 Controller 和 View 之间修改的实体

javascript - 如何删除标记然后将标记添加到我的 map 中?

javascript - 禁用输入类型 ="image"作为按钮

javascript - 来自 geojson 的 D3 条形图

.net - 远程服务器返回错误 : (401) Unauthorized with paypal

android - 一旦我限制了我的 Google API key ,它就不再有效

javascript - 谷歌街景位置