我使用 Google Maps for AngularJS 用 infoWindow 放置一些标记。 单击标记时它可以打开 infoWindow。 但是当点击另一个标记时它不能关闭打开的信息窗口。
<div id="map" ng-controller="MapCtrl">
<google-map
center="map.center"
zoom="map.zoom"
draggable="true"
dragging="map.dragging"
events="map.events"
control="map.control"
refresh="true">
<markers models="map.markers" coords="'self'" icon="'icon'" click="'onClicked'">
<windows show="'showWindow'" closeClick="'closeClick'" ng-cloak>
<img ng-non-bindable src="{{url}}" width="200px;" class="img-responsive" />
</windows>
</markers>
</google-map>
</div>
这里是controller.js
var mapControllers = angular.module('mapControllers', ['google-maps']);
mapControllers.controller('MapCtrl', function($scope, $http) {
var onMarkerClicked = function (marker) {
_.each($scope.map.markers, function (mker) {
mker.showWindow = false;
});
$scope.$apply();
marker.showWindow = true;
};
$scope.map = {
current_marker: {},
control:{},
markers: [],
center: {
latitude: 35.4138,
longitude: 139.4505
},
zoom: 6,
dragging: true
};
$http.get('/v1/tweets').success(function(data) {
for (var i = 0; i < data.length; i++) {
var marker = {
latitude: data[i].lat,
longitude: data[i].lon,
text: data[i].text,
url: data[i].url,
icon: '/assets/flower.png',
showWindow: false
};
marker.closeClick = function () {
marker.showWindow = false;
$scope.$apply();
};
marker.onClicked = function () {
onMarkerClicked(marker);
};
$scope.map.markers.push(marker);
}
});
});
如何更改此代码?
最佳答案
使用 jQuery 的肮脏 hack:
$("img[src='https://maps.gstatic.com/mapfiles/api-3/images/mapcnt3.png']").click();
在显示新信息窗口之前关闭/单击所有打开的窗口。
关于javascript - 在 AngularJS 的谷歌地图中单击标记时如何关闭其他信息窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22864297/