【问题标题】:jQuery gmap3 syntax errorjQuery gmap3 语法错误
【发布时间】:2012-03-21 03:17:44
【问题描述】:

我正在使用 jQuery 插件 gmap3。我可以将多个标记添加到地图中,但我试图为其中一个提供信息窗口时遇到了困难。

如果我删除注释“//添加带有信息窗口的标记”下的代码,则会创建标记但没有信息窗口。使用代码如何创建没有地图。

$('#test').gmap3(
  //create the map
  { action:'init'
  },

  //add a marker with info window
  { action: 'addInfoWindow',
    address: "London"
  },
  infowindow:{
    options:{
    content: 'This is London'
    },
    apply:[
        { action:'setContent',
            args:[
            '<span style="color:#000">Here is a new content !<span>'
            ]
        }   
    ]
    },

  //add a marker
  { action: 'addMarker',
    address: "Paris",
  },

  //add a marker
  { action: 'addMarker',
    address: "Madrid",
  }

  //autofit the map view
  ,
  "autofit"     

);

我假设这是一个语法问题,但我完全被卡住了,所以非常感谢任何帮助。谢谢

更新除了自动调整功能不起作用外,我已经让它与以下内容一起使用。

$('#test').gmap3({
  action: 'addMarker',
  address: "place de l'étoile, Paris",

  marker:{
    options:{
      draggable: false
    }
  },
  infowindow:{
    options:{
      content: 'Hello World !'
    },
    events:{
      closeclick: function(){
        alert("closing : " + $(this).attr("id")); 
      }
    }
  }
},

  //add a marker
  { action: 'addMarker',
    address: "London",
  },
      "autofit" 

);

【问题讨论】:

    标签: jquery syntax google-maps-api-3 jquery-gmap3


    【解决方案1】:

    你的 json 中有一个尾随逗号

    地址:伦敦(您提到的评论下方的第二行)

    当它是 javascript 对象的最后一项时,不要提供逗号

    此外,infoWindow 看起来放置不当。它应该放在花括号中我猜它可能属于函数调用的末尾,但我不熟悉 Gmap3 api。

    查看 API,似乎有更简洁的方法来声明所有这些。我会参考http://gmap3.net/api.html

    看起来 infoWindow 属于动作:“infoWindow”对象

    类似:

    $('#test').gmap3(
      //create the map
      { 
        action:'init'
      },
    
      //add a marker with info window
      { 
        action: 'addInfoWindow',
        address: "London"
        infowindow:{
          options:{
            content: 'This is London'
          },
          apply:[
              { action:'setContent',
                  args:[
                  '<span style="color:#000">Here is a new content !<span>'
                  ]
              }   
            ]
          }
      },
    
      //add a marker
      { 
        action: 'addMarker',
        address: "Paris"
      },
    
      //add a marker
      { 
        action: 'addMarker',
        address: "Madrid"
      }
    
      //autofit the map view
      ,
      "autofit"     
    
    );
    

    【讨论】:

    • 我删除了逗号,但它仍然有效。我已经按问题更新了。谢谢
    • 我想我为您找到了问题所在。 infoWindow 属于 action 对象。
    • 恐怕还是黑屏。
    • @danpickett:address: "London" 之后缺少逗号。伦敦也缺少标记。
    • 添加逗号后,除了信息窗口缺少标记外,代码工作正常。差不多了!谢谢
    【解决方案2】:

    我觉得gmap3的工作流程很混乱,所以很容易产生一些语法错误^^


    编辑:

    但是,他们最好将此库标记为“测试版”,直到他们没有解决一些主要问题(例如自动调整,这在他们自己的演示中也不起作用)。

    使用多个标记“自动拟合”的主要问题是,您必须等到所有标记都已应用于地图。

    因此,不要重复调用addMarker,而是使用addMarkers 并在addMarkers 的回调中应用“自动拟合”。

    由于自动调整选项未按预期工作,请使用 google-API 提供的可能性: 从标记的位置创建一个 LatLngBounds 对象,并使用 map.fitBounds() 应用边界。

    演示:http://jsfiddle.net/doktormolle/BQyXb/

    【讨论】:

    • 除了像我的解决方案一样,自动调整被忽略
    • 您的解决方案不起作用,还是我遗漏了什么?我删除了自动调整,当作为最后一个参数提供时它会抛出异常。现在将其移至 infoWindow,似乎可以正常工作。
    • 我的意思是我们的两个解决方案都可以工作,只是两者都不使用自动调整功能。而不是整个地图的缩放,使用自动调整地图应该尽可能放大,同时仍然包含所有标记。谢谢
    • 我的解决方案现在应用了自动调整,并且可以正常工作。(我已经编辑过)
    • 完全修改了我的答案并添加了演示。
    猜你喜欢
    • 2013-05-19
    • 2013-05-23
    • 2010-12-22
    • 2015-05-07
    • 1970-01-01
    • 2012-09-09
    • 2016-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多