Google Maps API:未捕获的TypeError:无法读取未定义的属性“__e3_”

时间:2012-04-20 17:10:47

标签: google-maps-api-3 typeerror

我目前在我的天气网站上使用了一个新系统,我收到以下错误:

Uncaught TypeError: Cannot read property '__e3_' of undefined

Xe%7Bmain,places,weather%7D.js:18
Ve%7Bmain,places,weather%7D.js:21
P.addListener%7Bmain,places,weather%7D.js:18
T.(anonymous function).bindTo%7Bmain,places,weather%7D.js:27
initializejavascript.js:109
(anonymous function)javascript.js:4
f.Callbacks.ojquery.min.js:2
f.Callbacks.p.fireWithjquery.min.js:2
e.extend.readyjquery.min.js:2
c.addEventListener.B

以下是我在javascript.js header.php中包含的<script src="javascript.js" type="text/javascript"></script>文件中的内容:

$(document).ready(function() {
    initialize();
});

var elevator;
var geocoder;
var map;

function initialize() {

    // KONFIGURATION: Geocoding
    geocoder = new google.maps.Geocoder();

    // KONFIGURATION: Filnamn
    var weatherdata = 'fetch-information/fetch-weatherdata.php';

    // KONFIGURATION: Datum
    var date = new Date();
    var datetime = date.getFullYear() + '-' + 
                  (date.getMonth() < '10' ? '0' + date.getMonth() : date.getMonth()) + '-' +
                  (date.getDay() < '10' ? '0' + date.getDay() : date.getDay()) + ', ' +
                  (date.getHours() < '10' ? '0' + date.getHours() : date.getHours()) + ':' +
                  (date.getMinutes() < '10' ? '0' + date.getMinutes() : date.getMinutes()) + ':' +
                  (date.getSeconds() < '10' ? '0' + date.getSeconds() : date.getSeconds());

    // KONFIGURATION: Hämta adress
    var address = 'Karlstad, Sverige';

    // KONFIGURATION: Inställningar för kartan
    var myOptions = {
        streetViewControl: false,
        overviewMapControl: true,
        zoom: 14,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };


    // MOLNAKTIVITET
    var cloudLayer = new google.maps.weather.CloudLayer();
    cloudLayer.setMap(map);



    /**********************************************
    **    THE CODE BELOW IS CAUSING THE ERROR    **
    **********************************************/

    // HÖJD ÖVER / UNDER HAVSYTAN
    elevator = new google.maps.ElevationService();
    google.maps.event.addListener(map, 'click', getElevation);


    /* ** ** ** ** ** */


    // GOOGLE PLACES API
    var input = document.getElementById('googlemaps-search');
    var autocomplete = new google.maps.places.Autocomplete(input);

    autocomplete.bindTo('bounds', map);
    google.maps.event.addListener(autocomplete, 'place_changed', function() {
        var place = autocomplete.getPlace();
        alert(place.geometry.location);
    });

    /**********************************************
    **    THE CODE ABOVE IS CAUSING THE ERROR    **
    **********************************************/



    /* ** ** ** ** ** */


    // GEOCODING
    geocoder.geocode({'address' : address}, function(results, status) {

        // KONTROLL
        if(status == google.maps.GeocoderStatus.OK) {

            // KONFIGURATION: Ta bort ( och ) före och efter koordinaterna
            var old_latlong = '' + results[0].geometry.location + '';
            var new_latlong = old_latlong.substring(1, old_latlong.length - 1).replace(' ', '');

            // CENTERRING
            map.setCenter(results[0].geometry.location);

            // MARKERING: Adress
            var marker = new google.maps.Marker({
                map: map,
                position: results[0].geometry.location
            });

            // AJAX: Hämta den angivna filen
            $.ajax({
                    url: weatherdata + '?coordinates=' + new_latlong,

                    success: function() {
                                         console.log(datetime + ': Hämtningen av väderprognosen och den övriga informationen lyckades');
                                         $('.content-search').show();
                                         $('#load-weather').load(weatherdata + '?coordinates=' + new_latlong);
                                        },

                    error: function() {
                                       console.error(datetime + ': Hämtningen av väderprognosen och den övriga informationen misslyckades');
                                       $('#load-weather').hide();
                                       $('.content-search').hide();
                                       $('#message-error').show();
                                      }
                   });


        // KONTROLL
        } else {

            // FELMEDDELANDE
            alert('Kunde inte hämta data på grund av följande fel: ' + status);
        }

    });


    /* ** ** ** ** ** */


    // KARTA
    var map = new google.maps.Map(document.getElementById('weather-map'), myOptions);

}



/** ** ** ** ** ** ** ** ** ** ** ** **/



function getElevation(event) {
    var locations = [];
    var clickedLocation = event.latLng;
    locations.push(clickedLocation);

    var positionalRequest = {
        'locations': locations
    }

    elevator.getElevationForLocations(positionalRequest, function(results, status) {
        if(status == google.maps.ElevationStatus.OK) {
            var s = results[0].elevation;

            if(results[0]) {
                if(('' + parseInt(s)).charAt(0) == '-') {
                    $('#elevation').html('Cirka ' + number_format(('' + parseInt(s)).substring(1)) + ' meter under havsytan');
                } else {
                    $('#elevation').html('Cirka ' + number_format(parseInt(s)) + ' meter över havsytan');
                }
            } else {
                alert('Inget resultat hittades');
            }
        } else {
            alert('Det gick inte att hitta höjdskillnaden på grund av följande: ' + status);
        }
    });
}

问题是该系统与我之前的系统完全相同,并且我在它们上面都有相同的“代码结构”,但我仍然在新系统上收到此错误消息。我不知道为什么我得到它所以我问你知道:我怎样才能解决我的问题?

提前致谢。

1 个答案:

答案 0 :(得分:8)

当我将地图定义移动到标记错误代码之前的某个点时,它可以正常工作。我在地图选项后面添加了var map = new google.map.Map

  var myOptions = {
     streetViewControl: false,
     overviewMapControl: true,
    zoom: 14,
    mapTypeId: google.maps.MapTypeId.ROADMAP
};

var map = new google.maps.Map(document.getElementById('weather-map'), myOptions);

// MOLNAKTIVITET
var cloudLayer = new google.maps.weather.CloudLayer();
cloudLayer.setMap(map);



/**********************************************
**    THE CODE BELOW IS CAUSING THE ERROR    **
**********************************************/

// HÖJD ÖVER / UNDER HAVSYTAN
elevator = new google.maps.ElevationService();
google.maps.event.addListener(map, 'click', getElevation);