Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs Can';在显示下一个窗口之前,不要隐藏上一个窗口_Angularjs_Google Maps_Angular Google Maps - Fatal编程技术网

Angularjs Can';在显示下一个窗口之前,不要隐藏上一个窗口

Angularjs Can';在显示下一个窗口之前,不要隐藏上一个窗口,angularjs,google-maps,angular-google-maps,Angularjs,Google Maps,Angular Google Maps,我使用这个项目()来处理AngularJS 在文档中,我说我需要使用一个窗口指令来显示信息 我在一个标记中使用window指令 当我点击标记时,它下面的窗口显示出来 如果单击第二个标记,则上一个窗口不会隐藏 show属性似乎没有与isIconVisibleOnClick结合使用,因此在显示新窗口时,我找不到如何隐藏所有其他窗口 这是我使用的代码: myMapController.controller('MapController', [ '$scope', 'markerService', f

我使用这个项目()来处理AngularJS

在文档中,我说我需要使用一个窗口指令来显示信息

我在一个标记中使用window指令

当我点击标记时,它下面的窗口显示出来

如果单击第二个标记,则上一个窗口不会隐藏

show属性似乎没有与isIconVisibleOnClick结合使用,因此在显示新窗口时,我找不到如何隐藏所有其他窗口

这是我使用的代码:

myMapController.controller('MapController', [
'$scope',
'markerService',

function ( $scope, markerService ) {
var markerCollection = [];
$scope.options = {showWindow: false, window : {pixelOffset: new google.maps.Size(0, -30) , content: " - "  } };


angular.extend($scope, {
  map: {
    control: {},
    center: {
      latitude: 33.5,
      longitude: -112
    },
    zoom: 10,
    fit: true,
    visible: true,
    pan: true,
    options: {
      navigationControl: true,
      scaleControl: true
    }
  }
});

$scope.showWindow = function($index){
  for(var i = 0; 0 < $scope.markers.length; i++){
    $scope.markers[i].show =  false;
  }
};

$scope.verdad = false;

var setMapMarkers = function (){
  var markers = {};
  var index = 0;
  angular.forEach($scope.services, function (key) {
    var service = key.address;
    markerCollection.push(service);
    var serviceId = service.service.id;
    markers[index] = {
       coords: { "latitude": parseFloat(service.latitude), "longitude": parseFloat(service.longitude)},
       message: service.service.organization.name + "<br>" + service.phone,
       showWindow : false
    };
    index++;
  });
  $scope.markers = markers;

};
setMapMarkers();    
myMapController.controller('MapController')[
“$scope”,
“markerService”,
功能($scope,markerService){
var markerCollection=[];
$scope.options={showWindow:false,window:{pixelOffset:new google.maps.Size(0,-30),content:“-”};
角度。扩大范围{
地图:{
控件:{},
中心:{
纬度:33.5,
经度:-112
},
缩放:10,
菲特:没错,
可见:对,
潘:是的,
选项:{
导航控制:对,
scaleControl:对
}
}
});
$scope.showWindow=函数($index){
对于(变量i=0;0<$scope.markers.length;i++){
$scope.markers[i].show=false;
}
};
$scope.verdad=false;
var setMapMarkers=函数(){
var标记={};
var指数=0;
angular.forEach($scope.services,function(key){
var服务=key.address;
markerCollection.push(服务);
var serviceId=service.service.id;
标记[索引]={
坐标:{“纬度”:parseFloat(服务.纬度),“经度”:parseFloat(服务.经度)},
消息:service.service.organization.name+“
”+service.phone, 显示窗口:错误 }; 索引++; }); $scope.markers=标记; }; setMapMarkers();
} ]);

html

<google-map center='map.center' draggable='true' pan='true' zoom='map.zoom'>
        <layer type='TransitLayer'>
          <marker click='showWindow(m)' coords='m.coords' fit='true' idkey='$index' ng-repeat='m in markers'>
            <window isIconVisibleOnClick='true' options='{pixelOffset : options.window.pixelOffset}' show='m.show'>
              {{m.message}}
            </window>
          </marker>
        </layer>
      </google-map>

{{m.message}}

感谢您的支持:)

您可以跟踪上一个标记,并在单击新标记时将其“showWindow”设置为“false”

_.each($scope.mymarkers, function(marker) {
    marker.onClick = function() {
        $scope.$apply(function() {
            if(prevMarker) {
                prevMarker.showWindow = false;
            }
            marker.showWindow = true;
            prevMarker = marker;
        });
    }
});