javascript - Google map 用例在 Firefox 中存在 JS 错误

标签 javascript jquery firefox google-maps

我在 GM 中的信息窗口上遇到了 FF 错误。这是源代码:

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 是谷歌地图上标记的键数组。有人知道为什么我的这段代码会出现 FF 错误吗?

参数示例数据:

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

编辑: 错误是:createInfoWindow 未定义

提前致谢,

拉约斯·阿帕德。

最佳答案

您在循环内定义方法(这本身就很糟糕..),并且在定义它之前调用该方法..

只需将调用移至定义下方即可解决问题..

    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/

关于javascript - Google map 用例在 Firefox 中存在 JS 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7966811/

相关文章:

javascript - BackboneJS Turbolinks 历史问题

linux - 使用 Linux 处理 places.sqlite 文件

javascript - 间歇性发布两次..使用IE

html - 如何仅使用 HTML 在 mozilla firefox 中打开本地文件?

html - Firefox 中 href ="file://///..."的解决方法

javascript - 对象不支持此属性或方法 - IE 7/8

javascript - 从 node_modules 导入 JS 到 Vue

javascript - 如何使用 HTML-Javascript-CSS 从文件夹中顺序显示图像?

javascript - 如何在 Graphql 模式中定义日期数据类型?

javascript - 当 div 到达窗口底部时停止滚动