Javascript 从链接调用GoogleMapsV3中的事件侦听器
我试图通过链接调用Javascript 从链接调用GoogleMapsV3中的事件侦听器,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我试图通过链接调用google.maps.event.addListener。以下是我目前掌握的代码: var divcc = '#badaba'; //click color var divhc = '#ffffce'; //hover color var divoc = '#FFF'; //original color var lastopenwin; var marker1;
google.maps.event.addListener
。以下是我目前掌握的代码:
var divcc = '#badaba'; //click color
var divhc = '#ffffce'; //hover color
var divoc = '#FFF'; //original color
var lastopenwin;
var marker1;
var marker2;
//MAP---------------------------------------------------
function initialize() {
//pin icons
var image1 = '../images/marker.png';
var temp1 = new google.maps.MarkerImage(image1);
var image2 = '../images/coldmarker.png';
var temp2 = new google.maps.MarkerImage(image2);
//pins coords
var latlng1 = new google.maps.LatLng(33.528782,-112.343972);
var latlng2 = new google.maps.LatLng(32.996381,-112.231125);
//info windows
var content1 = '<div style="width:300px;">Hello World!!!</div>';
var infowindow1 = new google.maps.InfoWindow({
content: content1
});
var content2 = '<div style="width:300px;">Hello Universe!!!</div>';
var infowindow2 = new google.maps.InfoWindow({
content: content2
});
//map options
var myOptions = {
zoom: 8,
center: latlng1,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
//place map
var map = new google.maps.Map(document.getElementById("map_canvas"),
myOptions);
//place pins
var marker1 = new google.maps.Marker({
position: latlng1,
icon: temp1,
title:"Hello World!"
});
marker1.setMap(map);
var marker2 = new google.maps.Marker({
position: latlng2,
icon: temp1,
title:"Hello Universe!"
});
marker2.setMap(map);
//listeners
google.maps.event.addListener(marker1, 'click', function() {
//alert(lastopenwin);
if(lastopenwin){
//alert(lastopenwin);
lastopenwin.close();
}
document.getElementById("item1").style.background = divcc;
infowindow1.open(map,marker1);
lastopenwin = infowindow1;
});
google.maps.event.addListener(marker1, 'mouseover', function() {
document.getElementById("item1").style.background = divhc;
marker1.setIcon(temp2);
});
google.maps.event.addListener(marker1, 'mouseout', function() {
document.getElementById("item1").style.background = divoc;
marker1.setIcon(temp1);
});
google.maps.event.addListener(marker2, 'click', function() {
//alert(lastopenwin);
if(lastopenwin){
lastopenwin.close();
}
document.getElementById("item2").style.background = divcc;
infowindow2.open(map,marker2);
lastopenwin = infowindow2;
});
google.maps.event.addListener(marker2, 'mouseover', function() {
document.getElementById("item2").style.background = divhc;
marker2.setIcon(temp2);
});
google.maps.event.addListener(marker2, 'mouseout', function() {
document.getElementById("item2").style.background = divoc;
marker2.setIcon(temp1);
});
}
这不管用。有人有想法吗?问题是您引用的变量在全局范围内不存在 为了说明发生的事情,考虑下面的代码:
function initialize() {
var my_local_variable = "Hello there!";
alert("From function scope: " + my_local_variable)
}
initialize();
// Will alert "From function scope: Hello there!"
alert("From global scope: " + my_local_variable);
// Will alert "From global scope: undefined"
您在使用marker2
的initialize
函数中也在做同样的事情。解决方案是在initialize
函数中使用google.maps.event.addListener()
函数来侦听链接中的单击事件。即:
google.maps.event.addListener(
document.getElementById("your_link_id"),
'click',
function() {
// Work your magic here
});
好的,我创建了一个侦听器,给了一个链接一个link1的id,并相应地调整了侦听器以使用该id。我只是在函数中有一个警报('hi'),但当我单击链接时,它仍然没有运行。我想我现在得到了它。我不得不使用addDomListener而不是addListener。谢谢你为我指明了正确的方向,肖恩。
google.maps.event.addListener(
document.getElementById("your_link_id"),
'click',
function() {
// Work your magic here
});