每当点击地图上的某个区域时,它应该打开该区域的窗口,但它不会。
预期结果如下:
Here is how I want it to look.
这是我的HTML:
<ui-gmap-polygon static="true" ng-repeat="p in regions track by p.id" path="p.path" visible="p.visible" stroke="p.stroke" fill="p.fill" events="events" clickable="true" >
</ui-gmap-polygon>
<ui-gmap-windows models="markers" show="show">
<!-- Window Code -->
</ui-gmap-windows>
这是多边形的$ scope.events.click函数:
for(var i = 0; i < $scope.markers.length; i++) {
//console.log(model.path[0].id + " == " + $scope.markers[i].id);
if(model.path[0].id == $scope.markers[i].id) {
console.log("Showing window " + model.path[0].id);
$scope.markers[i].show = true;
}
else
{ // hides other windows
$scope.markers[i].show = false;
}
}
需要注意的事项。日志语句确实显示,而不是窗口。 这是一个掠夺者:Plunker
答案 0 :(得分:1)
我想你想要添加多个多边形,所以将你的html改为:
eo1 = copy(u)
您需要定义将值定义为字符串的属性,例如:u
eo1
我添加了第二个模型只是因为我想测试它的多个值。所以我的控制器看起来像这样:
<ui-gmap-google-map center="map.center" zoom="map.zoom" draggable="true" options="options" bounds="map.bounds">
<ui-gmap-polygons static="true" models="regions" path="'path'" visible="true" stroke="'stroke'" fill="'fill'" events="events" clickable="true" >
</ui-gmap-polygons>
<ui-gmap-windows models="markers" show="'show'" coords="'coords'">
<div ng-non-bindable>Test</div>
</ui-gmap-windows>
</ui-gmap-google-map>
如果可以,例如,您应该更改数据模型show="'show'"
定义两次的区域。
答案 1 :(得分:0)
我找到了解决问题的替代方案。我没有使用每个标记的窗口,只使用了一个:
<ui-gmap-window coords="selected" show="windowShown" closeClick="closeClick()">
<!-- Window Code -->
</ui-gmap-window>
然后在控制器中我们有一个类似的点击功能:
/*
Events when clicking on a polygon.
*/
$scope.events = {
click: function(polygon, eventName, model) {
// show the window
for(var i = 0; i < $scope.markers.length; i++) {
if(model.path[0].id == $scope.markers[i].id) {
$scope.selected = $scope.markers[i];
$scope.windowShow = true;
}
}
}
};
最后,我们有一个closeClick函数,以确保窗口关闭后$ scope.windowShown设置为false。否则,在关闭后,您无法在同一多边形上重新打开窗口。
$scope.closeClick = function() { $scope.windowShow = false; }