googlemapsjavascript与InfoWindows

googlemapsjavascript与InfoWindows,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我有一个javascript文件,如下所示,它是联系我们页面中的init。我几乎添加了我想要的所有内容,但不知道如何为每个标记设置工作信息窗口。事实上,我知道如何设置和使用infoWindow,但不知道在这段代码中放在哪里 var ContactUs = function () { return { //main function to initiate the module init: function () { var neig

我有一个javascript文件,如下所示,它是联系我们页面中的init。我几乎添加了我想要的所有内容,但不知道如何为每个标记设置工作信息窗口。事实上,我知道如何设置和使用infoWindow,但不知道在这段代码中放在哪里

var ContactUs = function () {
    return {
        //main function to initiate the module
        init: function () {
            var neighborhoods = [
              { lat: 41.02688344, lng: 28.97104517, icon: '../Content/blue_MarkerSS.png', content: "a" },
              { lat: 41.07992535, lng: 29.02025431, icon: '../Content/blue_MarkerL.png', content: "b" },
              { lat: 41.059097, lng: 28.983857, icon: '../Content/blue_MarkerB.png', content: "c" },
              { lat: 41.08476948, lng: 28.97748649, icon: '../Content/blue_MarkerK.png', content: "d" },
              { lat: 41.05635465, lng: 28.95114452, icon: '../Content/red_MarkerS.png', content: "e" }
            ];

            var markers = [];
            var map;

            map = new google.maps.Map(document.getElementById("map"), {
                zoom: 12,
                center: { lat: 41.052244, lng: 28.985637 }
            });

            function addMarkerWithTimeout(position, timeout, icon, content) {
                window.setTimeout(function () {
                    markers.push(new google.maps.Marker({
                        position: position,
                        map: map,
                        animation: google.maps.Animation.DROP,
                        icon: icon
                    }));
                }, timeout);
            }

            for (var i = 0; i < neighborhoods.length; i++) {
                addMarkerWithTimeout(neighborhoods[i], i * 300, neighborhoods[i].icon, neighborhoods[i].content);
            }
        }
    };
}();
var ContactUs=函数(){
返回{
//启动模块的主要功能
init:函数(){
var邻域=[
{lat:41.02688344,lng:28.97104517,图标:'../Content/blue_markers.png',内容:“a”},
{lat:41.07992535,lng:29.02025431,图标:'../Content/blue_MarkerL.png',内容:“b”},
{lat:41.059097,lng:28.983857,图标:'../Content/blue_MarkerB.png',内容:“c”},
{lat:41.08476948,lng:28.97748649,图标:'../Content/blue_MarkerK.png',内容:“d”},
{lat:41.05635465,lng:28.95114452,图标:'../Content/red_MarkerS.png',内容:“e”}
];
var标记=[];
var映射;
map=new google.maps.map(document.getElementById(“map”){
缩放:12,
中心:{lat:41.052244,lng:28.985637}
});
函数addMarkerWithTimeout(位置、超时、图标、内容){
setTimeout(函数(){
markers.push(新的google.maps.Marker)({
职位:职位,,
地图:地图,
动画:google.maps.animation.DROP,
图标:图标
}));
},超时);
}
for(var i=0;i
更新:

我有一个包含infoWindows的工作脚本。我想像第一个问题一样添加addMarkerWithTimeout。考虑将包含infoWindows和addMarkerWithTimeout的两个脚本合并在一起。我的问题就是这个

最初的addMarkerWithTimeout示例是(我不想要那个按钮)

var ContactUs=函数(){
返回{
init:函数(){
变量位置=[
[a',41.02688344,28.97104517,4'。/Content/blue_markers.png'],
[b',41.07992535,29.02025431,5',../Content/blue_markers.png'],
[c',41.059097,28.983857,3',../Content/blue_markers.png'],
[d',41.08476948,28.97748649,2',../Content/blue_MarkerK.png'],
[e',41.05635465,28.95114452,1',../Content/red_MarkerS.png']
];
var map=new google.maps.map(document.getElementById('map'){
缩放:12,
中心:新google.maps.LatLng(41.05224428.985637),
mapTypeId:google.maps.mapTypeId.ROADMAP
});
var infowindow=new google.maps.infowindow();
var标记,i;
对于(i=0;i
这方面的文档非常好:

根据文档,您只需初始化信息窗口,然后添加事件处理程序,或者以您希望的方式触发它并调用:

infowindow.open(地图、标记)


您使用的IIFE建议最好使用事件处理程序。否则,您可以添加一个额外的闭包来触发open方法,并随时随地调用它。

关于这方面的文档非常好:

根据文档,您只需初始化信息窗口,然后添加事件处理程序,或者以您希望的方式触发它并调用:

infowindow.open(地图、标记)

您使用的IIFE建议最好使用事件处理程序。否则,您可以添加一个额外的闭包来触发open方法,并随时随地调用它。

(针对您的问题和未来的用户)

您可以在这个非常好的网站(google maps v3)上进行自我介绍,该网站关注您的问题:

网址:

另外,我建议访问一个流行的stackoverflow线程,它再次处理您的问题(如果您还没有闭包,您还可以获得关于闭包的更好的见解)

网址:

通过这两个链接和infowindows上的官方谷歌地图网站

网址:

您应该没有任何问题来解决您的问题。

(针对您的问题和未来的用户)

您可以在这个非常好的网站(google maps v3)上进行自我介绍,该网站关注您的问题:

网址:

另外,我建议访问一个流行的stackoverflow线程,它再次处理您的问题(如果您还没有闭包,您还可以获得关于闭包的更好的见解)

网址:

通过这两个链接和infowindows上的官方谷歌地图网站

网址:

你应该没有任何问题来解决你的问题。

  • 保留对标记的引用。而不是:
做:

  • 然后将单击侦听器添加到标记(或者您可以将其添加到
    标记[markers.length-1]
    …):

代码片段:

var ContactUs=function(){
返回{
//主函数t
var ContactUs = function () {
    return {
        init: function () {
            var locations = [
              ['a', 41.02688344, 28.97104517, 4, './Content/blue_MarkerSS.png'],
              ['b', 41.07992535, 29.02025431, 5, '../Content/blue_MarkerSS.png'],
              ['c', 41.059097, 28.983857, 3, '../Content/blue_MarkerSS.png'],
              ['d', 41.08476948, 28.97748649, 2, '../Content/blue_MarkerK.png'],
              ['e', 41.05635465, 28.95114452, 1, '../Content/red_MarkerS.png']
            ];

            var map = new google.maps.Map(document.getElementById('map'), {
                zoom: 12,
                center: new google.maps.LatLng(41.052244, 28.985637),
                mapTypeId: google.maps.MapTypeId.ROADMAP
            });

            var infowindow = new google.maps.InfoWindow();

            var marker, i;

            for (i = 0; i < locations.length; i++) {
                marker = new google.maps.Marker({
                    position: new google.maps.LatLng(locations[i][1], locations[i][2]),
                    map: map,
                    icon: locations[i][4]
                });

                google.maps.event.addListener(marker, 'click', (function (marker, i) {
                    return function () {
                        infowindow.setContent(locations[i][0]);
                        infowindow.open(map, marker);
                    }
                })(marker, i));
            }
        }
    };
}();
markers.push(new google.maps.Marker({
                position: position,
                map: map,
                animation: google.maps.Animation.DROP,
                icon: icon
           }));
var marker = new google.maps.Marker({
                    position: position,
                    map: map,
                    animation: google.maps.Animation.DROP,
                    icon: icon
                });
markers.push(marker);
google.maps.event.addListener(marker,'click', function(e) {
  infowindow.setContent(content);
  infowindow.open(map,marker);
});