В случае использования Google Maps произошла ошибка JS в Firefox - PullRequest
0 голосов
/ 01 ноября 2011

У меня ошибка FF по поводу информационного окна в GM.Вот исходный код:

var lats;
var longs;
var k;

function initialize() {
    //parentArray is an object where the elements of the parent page are stored
    var parentArray = window.parent.params;
    lats = parentArray["lat"].replace(/^\|+|\|+$/g, '').split("|");
    longs = parentArray["long"].replace(/^\|+|\|+$/g, '').split("|");
    k = parentArray["keys"].replace(/^\|+|\|+$/g, '').split("|");
    var myLatlng = new google.maps.LatLng(parseFloat(lats[0]), parseFloat(longs[0]));
    var myOptions = {
        zoom: 20,
        center: myLatlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    }

    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    //contentString is built based on the array passed by the parent page

    for (var i = 0; i < lats.length; i++) {
        var contentString = '<div id="content"' + i + '><b>' + k[i] + '</b>';
        for (var f in parentArray)
            if ((f !== "long") && (f !== "lat") && (f !== "keys") && (parentArray[f].substring(0, 1) !== "<")) {
                    contentString += '<br />' + f + ': ' + parentArray[f];
            }
        contentString += '<br /></div>';

        var infowindow = new google.maps.InfoWindow({
            content: contentString
        });

        var marker = new google.maps.Marker({
            position: new google.maps.LatLng(parseFloat(lats[i]), parseFloat(longs[i])),
            map: map,
            title: 'Position'
        });
        createInfoWindow(marker, contentString);

        function createInfoWindow(m, content) {
            google.maps.event.addListener(m, 'click', function () {
                infowindow.setContent(content);
                infowindow.open(map, m);
            });
        }

    }

}

params - это массив с информацией, а k - это массив ключей для маркеров на карте Google.Кто-нибудь знает, почему у меня есть ошибка FF для этого кода?

Пример данных Для параметров:

params['foo']: bar
params['keys']: "Start Position|End Position"
params['lat']: "12.5323703|13.5323703"
params['long']: "14.5786987|15.5786987"

РЕДАКТИРОВАТЬ: Ошибка: createInfoWindow не определено

Заранее спасибо,

Лайос Арпад.

1 Ответ

2 голосов
/ 01 ноября 2011

Вы определяете свой метод внутри цикла ( это плохо само по себе .. ), и вы вызываете метод, прежде чем его определить ..

просто перемещаете вызов нижеопределение устраняет проблему ..

    function createInfoWindow(m, content) {
        google.maps.event.addListener(m, 'click', function () {
            infowindow.setContent(content);
            infowindow.open(map, m);
        });
    }

    createInfoWindow(marker, contentString);

Демонстрация на http://jsfiddle.net/gaby/gdLVd/


Но вы должны действительно переместить определение метода createInfoWindow в другое место..

Лучше демо на http://jsfiddle.net/gaby/gdLVd/1/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...