[英]How to close other infoWindows when a marker clicked in google maps for AngularJS
I use Google Maps for AngularJS to put some markers with infoWindow. 我使用Google Maps for AngularJS在infoWindow中放置一些标记。 It can open infoWindow when a marker is clicked.
单击标记时,它可以打开infoWindow。 But it cannot close the opened infoWindow when another marker is clicked.
但是,当单击另一个标记时,它无法关闭打开的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>
Here is the controller.js 这是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);
}
});
});
How can I change this code ? 如何更改此代码?
Dirty hack with jQuery: jQuery的肮脏hack:
$("img[src='https://maps.gstatic.com/mapfiles/api-3/images/mapcnt3.png']").click();
Close/click all open windows before showing new Infowindow. 在显示新的Infowindow之前,关闭/单击所有打开的窗口。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.