1

このコードを使用して、Google MapsJavaScriptv3マップを機能させています。しかし、このマップが表示されているページをクリックすると、表示され続けUncaught TypeError: Cannot read property '__e3_' of undefinedます。昨日は完璧に機能し、それ以来Webサイトで何もしていません。

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 に答える