在角度谷歌地图中单击多边形时如何显示窗口?

时间:2016-04-27 20:52:32

标签: javascript angularjs google-maps

每当点击地图上的某个区域时,它应该打开该区域的窗口,但它不会。

预期结果如下:

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

2 个答案:

答案 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; }