为什么我的假常量赋值只能在jQuery中使用一次?

时间:2013-11-07 02:58:41

标签: jquery html jquery-plugins google-maps-markers

我正在使用gomap向地图添加一些标记。 gomap允许您添加您选择的图标,而不是使用相同的旧标记。我有几个这样的代码:

var constants = {
    'nflIcon': 'Content/Images/green.png',
    'bigBurrito': 'Content/Images/humongousBurrito.png'
};

$(function () {
    $("#map").goMap({
        latitude: 36.75,
        longitude: -100,
        maptype: 'ROADMAP',
        zoom: 5
    });

$.goMap.createMarker({
    address: 'Green Bay, Wisconsin',
    title: 'Green Bay Packers',
    group: 'NFL',
    icon: constants.nflIcon,
    html: getPackers()
});

$.goMap.createMarker({
    address: 'San Francisco, California',
    title: 'San Francisco 49ers',
    group: 'NFL',
    icon: constants.nlfIcon,
    html: '<h1>San Francisco 49ers</h1>'
});

...但constants.nflIcon的分配仅适用于一个(使用Green Bay Packers标记);所有其他人都使用传统的橙色反泪珠标记。

为什么?

1 个答案:

答案 0 :(得分:2)

您在非工作电话中使用nlfIcon,在工作电话中使用nflIcon

$.goMap.createMarker({
    address: 'San Francisco, California',
    title: 'San Francisco 49ers',
    group: 'NFL',
    icon: constants.nflIcon, // This is now fixed
    html: '<h1>San Francisco 49ers</h1>'
});

如果我经常这样做,我会在createMarker周围创建一个包装器来简化我的代码。例如,您可以执行以下操作:

function createMarker(options) {
    var defaults = {icon: constants.nflIcon};
    $.goMap.createMarker($.extend({}, defaults, options));
}

function createNFLMarker(options) {
    var defaults = {group: "NFL"};
    createMarker($.extend({}, defaults, options));
}

然后,您可以使用每个团队更改的详细信息(地址,标题等)来调用createNFLMarker,而不必将复制粘贴代码的多个部分保持同步。