Мне нужно запустить программный код поиска угловых google-карт places_changed
программным способом, вместо ручного нажатия на ввод. Как это сделать?Что такое синтаксис для запуска события поиска «places_changed» программно с помощью угловых карт Google?
Я попытался с помощью ванили решения ЯШ:
google.maps.event.trigger(searchbox, 'places_changed');
Но я не уверен, что для отправки в качестве первого параметра.
Это моя разметка:
<ui-gmap-google-map center='map.center' zoom='map.zoom' draggable="true" options="map.options" control="map.control">
<ui-gmap-search-box template="searchbox.template" events="searchbox.events" position="'TOP_LEFT'">
</ui-gmap-search-box>
</ui-gmap-google-map>
Это мой код контроллера:
$ scope.map = { центр: { широта: 45, долгота: -73 }, zoom: 8 }; $ scope.map.control = {}; $ scope.map.options = { scrollwheel: true };
var events = {
places_changed: function(searchBox) {
console.log("Search Box :", searchBox.getPlaces());
var location = searchBox.getPlaces();
console.log("Location :", location[0].geometry.location["G"]);
var geoKeys = Object.keys(location[0].geometry.location);
console.log("Keys :", geoKeys);
$scope.map["center"]["latitude"] = location[0]["geometry"]["location"][geoKeys[0]];
$scope.map["center"]["longitude"] = location[0]["geometry"]["location"][geoKeys[1]];
uiGmapIsReady.promise(1).then(function(maps) {
$timeout(function() {
console.log("Map :", $scope.map.control.getGMap());
console.log("Bounds :", $scope.map.control.getGMap().getBounds());
if (location[0].geometry.viewport) {
$scope.map.control.getGMap().fitBounds(location[0].geometry.viewport);
} else {
$scope.map["zoom"] = 15;
}
var marker = [{
coordinates: {
latitude: $scope.map["center"]["latitude"],
longitude: $scope.map["center"]["longitude"]
},
title: location[0]["name"],
id: location[0]["id"],
icon: location[0]["icon"]
}];
$scope.randomMarkers = marker;
console.log("Random Markers :", $scope.randomMarkers);
});
console.info("Google Maps ready", $scope.map);
});
//$scope.map.fitBounds(location[0].geometry.viewport);
}
}
$scope.searchbox = {
template: 'app/user/editProfile/map-search.html',
events: events
};
Теперь мне нужно, чтобы вызвать «places_changed» событие с помощью ng-click
откуда-то на странице. Как это сделать?
Заранее спасибо.
Поскольку я использую угловую Google-карту службу Wraparound вместо того, чтобы непосредственно с помощью API Google, я неспособен получить доступ к google.maps.event объекта. – jackOfAll
Вы не можете получить доступ к объекту google.maps.event из-за состояния гонки. Объект google загружается, даже если вы используете директиву угловых google-maps. Я редактировал код выше, чтобы вернуть обещание, когда карта google готова. Вам нужно ввести uiGmapIsReady в контроллер, чтобы он работал. – Porlune