TL定义叠加; DR混合谷歌地图与骨干网访问量
是PinView.prototype = _.extend(PinView.prototype, google.maps.OverlayView.prototype)
“正确”的方式有了主心骨查看从另一个“类”继承?
龙阅读
我们重做使用主干我们的网站和包括一些映射功能正在工作。
我有一个Backbone视图,用于处理将<div>
s放置到浏览器窗口中的特定点上;这似乎是一个很自然的事情,为了让Google的Map API把它们放在地理坐标上。
根据Google API,为了生成自定义覆盖图,您需要创建一个新对象并将该对象的原型设置为google.maps.OverlayView的新实例。然后,您可以实现对物体的前三大功能,使对象响应:
onAdd
draw
onRemove
哪里onAdd
负责生成HTML,然后将它放到最上面的地图。随后调用draw
,根据LatLng对和您提供的边界正确定位元素。 onRemove
当你想摆脱你的图层时被调用。
所以我修改了我的视图以包含这三个方法(它们只是调用render和unrender并绑定到我的集合)。然后让“魔术发生”我做:
PinView.prototype = _.extend(PinView.prototype, google.maps.OverlayView.prototype)
这是否正确?我可以发布视图和它所基于的模型的代码,但老实说,它们与这个例子无关 - 代码可以工作,我可以将通过Backbone模型,视图和控制器组件生成的自定义div
在地图上没有问题,我问我猜(也许这个问题更适合程序员。所以让我知道,我会移动它)。
这似乎是使我的PinView既是一个Backbone View又是一个Google Maps OverlayView的最简单的方法,但我并不是100%满意于原型继承来知道我是在做一些“错误的”在路的某个地方。
嗯,它可能实际上是干净的PinView作为BackboneView与谷歌地图OverlayView作为PinView的一个属性链接到该覆盖层不知道有关谷歌内部的类,因为它们有点被所有缩小模糊 - 但我想我宁愿避免混合这两个,因为它们是不同类型的类和谁 知道会发生什么(尽管如果它有效,请告诉我们!)。一些我完全喜欢尝试玩更多 - 如果我只有时间呃! – 2012-02-03 12:38:46
它正在工作,我想我的问题更多的是“你是如何使用原型继承进行多重继承”而不是“我应该真的这么做吗?”骨干的东西是超级干净的,所以我不担心某种原型命名空间冲突,并且当谷歌的源代码被缩小,当你在调试器中玩它的时候,OverlayView()的原型,对象实际上也非常简单。 – tkone 2012-02-03 12:49:35