无法读取未定义的属性'__e3_'

时间:2016-10-11 09:41:32

标签: javascript jquery wordpress google-maps google-maps-api-3

这里看到了一些错误,但看了解答案,我还没有找到适用于此的解决方案。所有似乎都工作正常,直到我在eventListener中添加'click'来打开一个infoWindow,这是我在控制台中收到以下错误的时候:

无法读取未定义

的属性'__e3_'

有关导致此错误的原因的任何想法?

请注意,我远不是使用Google地图的专家,所以请记住任何答案:)

time

2 个答案:

答案 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() { 标记变量未定义。因而错误。可能对某人有用。