Javascript 我如何结合谷歌地图和基于主干视图的信息箱
我想有一个谷歌地图,当点击一个标记,会打开一个信息框(或自定义覆盖),这实际上是(或基于)主干视图。主干视图应该在第一次打开时通过放置一个ajax调用来获取其内容,但是如果关闭并重新打开,则不应该再调用服务器(应该显示第一次打开的结果) 我根本不知道如何实现这一点,因为信息框的内容是一个dom元素(我只想在第一次打开时更改/填充)。(顺便说一句,我主要是一个后端开发人员,前端对我来说是非常新的) 我想到的是做类似的事情,但我不确定这是正确的方式:Javascript 我如何结合谷歌地图和基于主干视图的信息箱,javascript,google-maps,google-maps-api-3,backbone.js,google-maps-markers,Javascript,Google Maps,Google Maps Api 3,Backbone.js,Google Maps Markers,我想有一个谷歌地图,当点击一个标记,会打开一个信息框(或自定义覆盖),这实际上是(或基于)主干视图。主干视图应该在第一次打开时通过放置一个ajax调用来获取其内容,但是如果关闭并重新打开,则不应该再调用服务器(应该显示第一次打开的结果) 我根本不知道如何实现这一点,因为信息框的内容是一个dom元素(我只想在第一次打开时更改/填充)。(顺便说一句,我主要是一个后端开发人员,前端对我来说是非常新的) 我想到的是做类似的事情,但我不确定这是正确的方式: var view = new MyOverlay
var view = new MyOverlayBackboneView({ model: myModel});
var infoBoxOptions = {
content: view.el
};
var infoBox = new InfoBox(infoBoxOptions);
var marker = new google.maps.Marker({
map: map,
position: new google.maps.LatLng(some_lat, some_lng),
...
other marker related parameters
});
marker.infoBox = infoBox;
google.maps.event.addListener(marker, 'click', function() {
this.infoBox.open(map, this);
}
这里我缺少的是第一次打开信息框时主干视图的render()部分,对于在何处执行该操作,我没有多少线索
不用说,我希望启动infobox的代码部分尽可能干净,并将任何样式和ajax调用留给主干视图
如果有人能为我指出正确的方向(教程/示例代码),我将不胜感激。
提前感谢您提供的任何帮助。您的视图可能是这样的:
MyOverlayBackboneView = Backbone.View.extend({
render: function() {
[rendering the contents of your view here]
return this;
}
};
然后在创建信息框时:
var infoBoxOptions = {
content: view.render().el
};
这将使您的视图只呈现一次,然后将呈现的内容放入信息框。但是视图将从服务器上从何处获取its集合?如果我把它放在render()中,这意味着所有信息框都将在创建时从服务器获取,而不是在打开时。这意味着我正在从服务器获取可能永远看不到的数据。我希望ajax调用只在infoBox打开(主干视图可见)时进行,这为我解决了这个问题。泰@ken您可以通过套接字发送实际数据。您只需为客户端发送模板。。我不知道是否有办法通过socket/ajax发送模板,但您可以通过这种方式发送内容。。我不知道ajax是什么,但是socket.io相当不错。