我已经为Google maps API 3下载了一些示例,我可以看到一些代码如bellow:
(function (i, marker) {
google.maps.event.addListener(marker, 'click', function () {
if (!infowindow) {
infowindow = new google.maps.InfoWindow();
}
infowindow.setContent("Message" + i);
infowindow.open(map, marker);
});
})(i, marker);
有人可以解释一下这意味着什么吗?或者我们可以用不同的方式重写上面的代码吗?我对JavaScript有点新意,不知道上面代码到底是做什么的?
这是完整的脚本
function markicons(){
InitializeMap();
var ltlng = [];
ltlng.push(new google.maps.LatLng(17.22, 78.28));
ltlng.push(new google.maps.LatLng(13.5, 79.2));
ltlng.push(new google.maps.LatLng(15.24, 77.16));
map.setCenter(ltlng[0]);
for (var i = 0; i <= ltlng.length; i++) {
marker = new google.maps.Marker({
map: map,
position: ltlng[i]
});
(function (i, marker) {
google.maps.event.addListener(marker, 'click', function () {
if (!infowindow) {
infowindow = new google.maps.InfoWindow();
}
infowindow.setContent("Message" + i);
infowindow.open(map, marker);
});
})(i, marker);
}
}
答案 0 :(得分:1)
(function (i, marker) {
google.maps.event.addListener(marker, 'click', function () {
if (!infowindow) {
infowindow = new google.maps.InfoWindow();
}
infowindow.setContent("Message" + i);
infowindow.open(map, marker);
});
})(i, marker);
代码:
i
和marker
click
事件infowindow
,则会创建一个。{li>
infowindow
答案 1 :(得分:0)
此代码在给定标记上分配click事件处理程序,以便在单击时弹出新信息窗口,其中包含文本“Message”,后面跟着标记索引。
很可能这段代码是所有标记循环的一部分。
如果我正确理解了您的目标,请在代码中添加此类功能:
function AssignMarkerClick(marker, index) {
google.maps.event.addListener(marker, 'click', function () {
if (!infowindow) {
infowindow = new google.maps.InfoWindow();
}
infowindow.setContent("Message" + index);
infowindow.open(map, marker);
});
}
然后将你的循环改为:
for (var i = 0; i <= ltlng.length; i++) {
marker = new google.maps.Marker({
map: map,
position: ltlng[i]
});
AssignMarkerClick(marker, i);
}
答案 2 :(得分:0)
你的代码snipet等同于下面的代码,除了它避免声明变量myFunc
:
var myFunc = function(i, marker) {
google.maps.event.addListener(marker, 'click', function () {
if (!infowindow) {
infowindow = new google.maps.InfoWindow();
}
infowindow.setContent("Message" + i);
infowindow.open(map, marker);
});
};
myFunc(i, marker);
这是一个常见的 javascript 模式来捕获可变变量的值(如果我们在 for循环中,i
或marker
可能会发生变化;没有它,它将是点击处理程序中使用的i
和marker
的最后一个值。)