Javascript 在谷歌地图中获取标记范围

Javascript 在谷歌地图中获取标记范围,javascript,angularjs,google-maps,angular-ui,angular-google-maps,Javascript,Angularjs,Google Maps,Angular Ui,Angular Google Maps,我有一张用Angular UI库为Google Maps()构建的地图 我需要在标记事件处理程序之外访问标记的作用域。通常,我可以在事件处理程序中访问作用域,如下所示: vm.markerEvents = { click: function (marker, eventName, scope) { console.log(scope); // can access the marker scope } }; <ui-gmap-google-map ...

我有一张用Angular UI库为Google Maps()构建的地图

我需要在标记事件处理程序之外访问标记的作用域。通常,我可以在事件处理程序中访问作用域,如下所示:

vm.markerEvents = {
    click: function (marker, eventName, scope) {
        console.log(scope);  // can access the marker scope
    }
};

<ui-gmap-google-map ...>
    <ui-gmap-markers events="vm.markerEvents" ....></ui-gmap-markers>
</ui-gmap-google-map>
更改标记对象本身的属性不会传播到贴图,这就是为什么我需要在范围上更改它们


欢迎您的任何意见。

您到底想做什么?可以获取google map marker对象,并使用GMAPAPI执行诸如
marker.setVisible(true)
之类的操作。使用ui映射选项中的
控件
对象可以在控件中公开gmap api我正在尝试使用
labelClass
修改标记的类。看起来您无法使用jQuery修改标记(因此没有
.addClass()
.removeClass()
),因此我在作用域上使用了
labelClass
属性。使用
mouseout
mouseover
事件,我可以正常地将
labelClass
更改为
map marker
,并在悬停时将
map marker悬停在上面,这样做很好。但是,我也需要从事件外部执行此操作,从另一个指令中的按钮的单击处理程序执行此操作。我现在想,我可能可以使用
.setVisible()
方法触发事件,以捕获范围并保存它。。。看起来有点骇人,但如果还有其他选择的话,我愿意听听。需要认识到maps api marker对象与您的作用域中的对象引用不同。他们通过
新的google.maps.Marker()
。但是如果您使用ui maps文档中的
控件
选项,您可以访问地图本身、标记、图层等的所有各种google map api
var markers = vm.markersControl.getGMarkers();
console.log(markers);

markers[0].property = 'newValue'; // does not propagate to map
markers[0].scope.property = 'newValue' // what I'm looking for (does not exist)