【发布时间】:2013-02-04 19:41:58
【问题描述】:
大家好,我正在尝试使用backbone.js 创建一个谷歌地图视图,但我真的不明白我需要做什么才能实现它。
这是我目前所拥有的(我也不确定这是否正确)。而且我真的不明白这种视图的渲染函数需要发生什么。
MYAPP.Widgets.Map = Backbone.View.extend({ template : template('grid-12'), initialize: function(){ }, activate: function(){ var mapOptions = { zoom: 8, center: new google.maps.LatLng(-34.397, 150.644), mapTypeId: google.maps.MapTypeId.ROADMAP }; this.map = new google.maps.Map(document.getElementById('googleMapBox'),mapOptions); }, render: function(){ this.$el.html(this.template(this)); this.activate(); return this; }, });
谢谢
编辑: 我查看了 tkone 提到的线程。 我在那里看不到答案,我真的不明白他为什么拒绝在这件事上提供任何真正的帮助。这可能是因为我缺乏 JS 或骨干知识(这真的没关系)。其他用户无法理解如何进行这项工作的其他帖子中提到了与 tkone 相同的问题。
我已经做到了这一点,但我收到了这个错误
Uncaught TypeError: Cannot read property 'offsetWidth' of null main.js:28 ih main.js:28 Lh main.js:34 MYAPP.Widgets.Map.Backbone.View.extend.activate MTAPP.widgets.js:23 MYAPP.Widgets.Map.Backbone.View.extend.render MYAPP.widgets.js:38(匿名函数)
我希望还有其他人愿意为解决这个问题做出贡献。
更新所以在 cmets 之后,getElement 函数确实返回了 null,所以我用一个返回元素的 jquery 选择器来切换它
但是!,我确实得到了一个不同的错误:未捕获的类型错误:无法设置未定义的属性“位置”
关注这个话题: Uncaught TypeError: Cannot set property 'position' of undefined
我发现您无法将 jquery 元素发送到 Map 对象。所以现在我被困在如何从 jquery 中提取实际的 DOM 元素。
关注这个话题: How to get a DOM Element from a JQuery Selector
我终于解决了。
谢谢。
【问题讨论】:
-
如果这不能直接解决问题,我有一堆代码可以完全解决这个问题,我可以给你看。
-
Re:渲染功能,在地图上你想做的任何事情(设置pins、cluster等)
-
@tkone 用该代码示例回答问题会不会更好?
-
@Gleeb 那么
$("#googleMapBox")实际上是否返回任何东西(除了一个空数组)?如果是这样,则使用$("#googleMapBox")[0]获取实际的Javascript 元素对象。如果不是,则您需要该元素尚未呈现到页面,您需要找出原因。
标签: javascript backbone.js google-maps-api-3