【发布时间】:2014-05-16 20:32:03
【问题描述】:
我使用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);
}
});
});
如何更改此代码?
【问题讨论】:
-
我有一个工作版本,但我使用了单对象指令和 ng-repeat plnkr.co/edit/AVKxRDn3xKtt2Q3jodWC?p=preview
-
您好 JoseM,我可以关闭 infoWINdows!非常感谢。
-
@vinod_vh 这如何回答这个问题?您的问题与本机 Google Maps API 有关,此问题与
angular-google-maps指令有关。
标签: javascript angularjs google-maps google-maps-api-3