这里看到了一些错误,但看了解答案,我还没有找到适用于此的解决方案。所有似乎都工作正常,直到我在eventListener中添加'click'来打开一个infoWindow,这是我在控制台中收到以下错误的时候:
无法读取未定义
的属性'__e3_'有关导致此错误的原因的任何想法?
请注意,我远不是使用Google地图的专家,所以请记住任何答案:)
time
答案 0 :(得分:10)
电话
geocoder.geocode( { 'address': country }, function(results, status) { ..
是异步的,意思是行
google.maps.event.addListener(marker, 'click', function() {
将在行
之前调用marker = new google.maps.Marker({ ..
在您的ts_newMapMarker
中调用。因此,在您要向其添加事件侦听器时,marker
不存在。您必须以某种方式重新安排代码,因此在初始化标记后添加侦听器,例如:
function ts_newMapMarker($marker, map)
{
var marker;
var dataCountry = $marker.attr('data-country');
console.log("Country: " + dataCountry);
geocoder = new google.maps.Geocoder();
function getCountry(country) {
geocoder.geocode( { 'address': country }, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
icon : '<?php bloginfo('template_url'); ?>/assets/images/map-marker.png'
});
map.markers.push( marker );
getCountry(dataCountry);
// if marker contains HTML, add it to an infoWindow
if($marker.html())
{
// create info window
var infowindow = new google.maps.InfoWindow({
content : $marker.html()
});
// show info window when marker is clicked
google.maps.event.addListener(marker, 'click', function() {
console.log("open info window");
infowindow.open( map, marker );
});
}
} else {
alert("Geocode was not successful for the following reason: " + status);
}
});
}
}
答案 1 :(得分:4)
就我而言
google.maps.event.addListener(marker, 'click', function() {
标记变量未定义。因而错误。可能对某人有用。