1

我正在使用此代码使 Google Maps JavaScript v3 地图工作。但是当我点击我进入该地图可见的页面时,我不断得到Uncaught TypeError: Cannot read property '__e3_' of undefined. 昨天它工作得很好,从那以后我没有在网站上做过任何事情!

var marker;
var map;

function initialize() {
    var coordinates = new google.maps.LatLng(<?php if(!empty($photo['coordinates_latitude']) OR !empty($photo['coordinates_longitude'])) { echo $photo['coordinates_latitude'].','.$photo['coordinates_longitude']; } else { echo '59.328648,13.485672'; } ?>);

    // KOORDINATER: Manuell uppdatering
    $('#update-map').click(function() {
        var lat = parseFloat(document.getElementById('coordinates-latitude').value);
        var lng = parseFloat(document.getElementById('coordinates-longitude').value);
        var latlong_update = new google.maps.LatLng(lat, lng);

        $('#coordinates-select option[value=""]').attr('selected', 'selected');

        marker.setPosition(latlong_update);
        map.setCenter(latlong_update);
    });


    // KOORDINATER: Förvalda koordinater
    $('select[name="coordinates"]').change(function() {
        var split = $(this).val().split(',');
        var latlong_static = new google.maps.LatLng(split[0], split[1]);

        $('input[name="textfield-latitude"]').val(split[0]);
        $('input[name="textfield-longitude"]').val(split[1]);
        $('#check-04').removeAttr('disabled').attr({'checked': (localStorage.getItem('approx-coordinates') == 1 ? true : false)});;
        $('#checkbox-04-text').removeClass('color-grey');
        $('#goto-coordinates').show();

        marker.setPosition(latlong_static);
        map.setCenter(latlong_static);
    });


    // KOORDINATER: Ta bort koordinater
    $('#delete-coordinates').click(function() {
        var latlong_clear = new google.maps.LatLng(59.328648,13.485672);
        var waschecked_coor = $('#check-04:checked').val() ? 1 : 0;

        marker.setPosition(latlong_clear);
        map.setCenter(latlong_clear);
        localStorage.setItem('approx-coordinates', waschecked_coor);

        $('input[name="textfield-latitude"]').val('');
        $('input[name="textfield-longitude"]').val('');
        $('#goto-coordinates').hide();
        $('#check-04').attr({'disabled': 'disabled', 'checked': false});
        $('#checkbox-04-text').addClass('color-grey');
        $('#coordinates-select option[value=""]').attr('selected', 'selected');
    });


    /******************************************************************************
    **                  THE CODE BELOW IS CAUSING THE PROBLEM                    **
    ******************************************************************************/

    // KOORDINATER: Koordinater genom markör på kartan
    google.maps.event.addListener(marker, 'dragend', function(a) {
        var waschecked_coor = $('#check-04:checked').val() ? 1 : 0;
        localStorage.setItem('approx-coordinates', waschecked_coor);

        $('input[name="textfield-latitude"]').val(a.latLng.lat().toFixed(6));
        $('input[name="textfield-longitude"]').val(a.latLng.lng().toFixed(6));
        $('#check-04').removeAttr('disabled').attr({'checked': (localStorage.getItem('approx-coordinates') == 1 ? true : false)});
        $('#checkbox-04-text').removeClass('color-grey');
        $('#goto-coordinates').show();

        map.panTo(a.latLng);
    });

    /******************************************************************************
    **                  THE CODE ABOVE IS CAUSING THE PROBLEM                    **
    ******************************************************************************/



    var myOptions = {
        center: coordinates,
        zoom: 14,
        mapTypeId: google.maps.MapTypeId.SATELLITE,
        streetViewControl: false
    };

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

    marker = new google.maps.Marker({
        position: coordinates,
        draggable: true,
        map: map
    });
}





// FUNKTION: Flytta markören
function moveMarker() {
    var lat = parseFloat(document.getElementById('coordinates-latitude').value);
    var lng = parseFloat(document.getElementById('coordinates-longitude').value);
    var newLatLng = new google.maps.LatLng(lat, lng);

    marker.setPosition(newLatLng);
    map.setCenter(newLatLng);
}




// JQUERY
$(document).ready(function() {

    // INITIERA KARTAN
    initialize();


    // KRYSSRUTA: Bakgrundsbild
    $('input[name="checkbox-02"]').click(function() {

        // KONTROLL: Ikryssad
        if($(this).is(':checked')) {
            var waschecked_wallpaper = $('#check-01:checked').val() ? 1 : 0;
            localStorage.setItem('wallpaper', waschecked_wallpaper);

            $('#check-01').attr({'disabled': 'disabled', 'checked': false});
            $('#checkbox-01-text').addClass('color-grey');


        // KONTROLL: Ej ikryssad
        } else {
            $('#check-01').removeAttr('disabled').attr({'checked': (localStorage.getItem('wallpaper') == 1 ? true : false)});
            $('#checkbox-01-text').removeClass('color-grey');
        }

    });



    // TEXTFÄLT: Koordinater
    $('input[name="textfield-latitude"], input[name="textfield-longitude"]').keyup(function() {

        // KONTROLL: Textfältet är inte tomt
        if($(this).val().length == 0) {
            var waschecked_coor = $('#check-01:checked').val() ? 1 : 0;
            localStorage.setItem('approx-coordinates', waschecked_coor);

            $('#goto-coordinates').hide();
            $('#check-04').attr({'disabled': 'disabled', 'checked': false});
            $('#checkbox-04-text').addClass('color-grey');


        // KONTROLL: Textfältet är tomt
        } else {
            $('#goto-coordinates').show();
            $('#check-04').removeAttr('disabled').attr({'checked': (localStorage.getItem('approx-coordinates') == 1 ? true : false)});
            $('#checkbox-04-text').removeClass('color-grey');
        }

    });

});

如果我删除google.maps.event.addListener(marker, 'dragend', function(a) {其中的内容,代码将完美运行,并且地图再次在页面上可见。

你能看出问题所在吗?正如我之前所说,从那时到现在,我没有对代码做任何其他事情。

提前致谢。

4

1 回答 1

2

“标记”变量在该代码中未定义(至少在今天)。如果不更改代码,不知道怎么会发生这种情况,假设时间可能已经改变。

如果在定义它之后定义依赖于“标记”的侦听器,它至少应该解决这个问题。

var marker = new google.maps.Marker({
    position: coordinates,
    draggable: true,
    map: map
});

并且可能将其更改为您在全局命名空间中定义的全局标记变量(通过从其前面删除“var”)。

工作链接

于 2012-10-14T15:59:56.740 回答