В течение последних двух часов я столкнулся со следующей проблемой, и я понятия не имею, как ее решить. Я делаю угловое приложение, которое использует директиву с угловыми указателями. Объект $ scope.center содержит позицию, которая первоначально просматривается на карте. Следующий фрагмент кода - это первые строки контроллера страницы, просматривающей карту. Все это хорошо работает.Директива по угловому контроллеру
angular.extend($scope, {
center: {
lat: 0,
lon: 0,
zoom: 1,
autodiscover: true
},
layers: {
normal: {
type: 'Tile',
source: {
type: 'OSM'
}
}
}
});
Однако, сейчас я пытаюсь обновить центральный объект с местом получили от геокодирования Google API. При нажатии на строку из результатов API Google называет следующие функции в контроллере:
$scope.gotoLocation = function(lat, lon) {
$log.log("called");
$scope.center = {
lat: 50,
lon: 50,
zoom: 0
}
}
В моей консоли журнал строка «называется» появляется, но вид карты не меняется. Также, когда я печатаю $ scope.center в функции, исходный объект, который указан выше, печатается, тогда как этот объект изменился на мои текущие lat и lon, потому что для параметра автообнаружения установлено значение true. Я проверил это с помощью следующего кода:
<openlayers ol-controls="controls" ol-center="center" ol-layers="layers" ol-markers="markers">
<ol-marker ng-repeat="marker in markers" lat="marker.lat" lon="marker.lon"></ol-marker>
</openlayers>
<form>
Latitude : <input type="number" step="any" ng-model="center.lat" />
Longitude : <input type="number" step="any" ng-model="center.lon" />
Zoom : <input type="number" step="any" ng-model="center.zoom" />
</form>
Всех три поля показать мое текущее широчайшее и Лон, а также при изменении поля обновления карты положения (!). Я не знаю, почему изменение модели из самого шаблона действительно работает, а его изменение с контроллера не работает. Кто-нибудь может мне с этим помочь?
Ссылка на директиву: https://github.com/tombatossals/angular-openlayers-directive/blob/master/dist/angular-openlayers-directive.js
Ну, можете ли вы попытаться воспроизвести проблему в плункер? Вот пустой шаблон для углового, чтобы вы начали: http://plnkr.co/edit/WprgipAdFBtxDKM6jogo?p=preview – SoluableNonagon