如何将谷歌地图和基于骨干视图的信息框结合起来
How can I combine Google Maps and an Infobox based on a Backbone View
我想要一个谷歌地图,当点击标记时,它将打开一个实际上(或基于)Backbone View的信息框(或自定义覆盖)。主干视图应该在第一次打开时通过发出ajax调用来获取其内容,但如果关闭并重新打开,则不应再次调用服务器(应显示第一次打开的结果)
我根本不知道如何实现这一点,因为信息框的内容是一个dom元素(我只想在第一次打开它时更改/填充它)。(顺便说一句,我主要是一名后端开发人员,前端对我来说很新)
我想做的是类似的事情,但我不确定这是正确的做法:
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);
}
我在这里缺少的是第一次打开信息框时Backbone View的render()部分,也不知道在哪里执行。
不用说,我希望启动infobox的代码部分尽可能干净,并将任何样式和ajax调用留给主干视图。
如果有人能给我指明正确的方向(教程/示例代码),我将不胜感激。提前感谢您提供的任何帮助。
您的视图可能是这样的:
MyOverlayBackboneView = Backbone.View.extend({
render: function() {
[rendering the contents of your view here]
return this;
}
};
然后在创建信息框时:
var infoBoxOptions = {
content: view.render().el
};
这将使视图只渲染一次,然后将渲染的内容放入InfoBox中。
相关文章:
- 访问布局信息是否也会导致浏览器重排
- javascript结合了数组和字典
- 将Firebase与Electron结合使用
- 结合jQuery和jetpack无限滚动
- 定义完全独立的样式信息
- 使用html2canvas获取基本信息
- 将Angular js与taglib结合使用
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 从信息框调用弹出图像库
- 将图像上传ajax与表单提交ajax相结合
- 如何在不传递此信息的情况下查找被调用的元素
- 将谷歌自动完成地址信息放在页面上,而不是表格中
- 如何通过解析类信息来使用jQuery创建类
- 包含数据库中相关信息的开放模态
- 单击按钮即可在浏览器的新选项卡中打开 Sapui5 详细信息页面
- 如何调整信息窗口的大小并点击按钮?+更改信息窗口的内容
- ng在更新$scope后重复不更新信息
- 如何将谷歌地图和基于骨干视图的信息框结合起来
- 如何结合jquery验证的错误信息
- 创建YQL Opentable以将RSS数据与Placemaker Map信息相结合