Closed SkyQuant closed 10 years ago
А в чем собственно проблема?
input
, привязав каждый к координате.$scope.$digest()
или $scope.$apply()
, чтобы изменения отобразились на карте.Проблема в том, что центр карты не меняется при изменении переменных lon и lat. $scope.center = [$scope.lon, $scope.lat ];
Специально только что проверил. Все работает. Вот код.
<ya-map ya-zoom="10" ya-center="{{ center }}"></ya-map>
<input type="text" ng-model="lon" placeholder="lon">
<input type="text" ng-model="lat" placeholder="lat">
<button ng-click="setCenter()">Изменить центр</button>
В контроллере:
$scope.center=[40.925358,57.767265];
$scope.lon = 0;
$scope.lat=0;
$scope.setCenter = function(){
//работают оба подхода
/*
$scope.center[0] = +$scope.lon;
$scope.center[1]= +$scope.lat;
*/
//и так тоже
$scope.center=[+$scope.lon,+$scope.lat];
}
Но если вы думали что единожды написав $scope.center = [$scope.lon, $scope.lat ];
все будет автоматом обновляться само, то так быть и не должно, так как в этом случае $scope.center
получает значение только один раз, при инициализации, и потом не меняется, даже если вы меняете $scope.lat
или $scope.lon
. Как вариант в этом случае можно повесить на lat
и lon
$watch
, чтобы автоматически обновлять центр.
А вот допустим я ставлю координаты на $watch. Как их можно загрузит в балон вместо event? Делаю как-то так, но это наобум: var coords = [lon, lat]; map.balloon.open(coords, { contentBody: 'Долгота: ' + coords[0].toPrecision(6) + ',\n Широта: ' + coords[1].toPrecision(6) }); Из документации тоже не могу понять, как отправить переменные вместо события. http://api.yandex.ru/maps/doc/jsapi/2.0/ref/reference/Balloon.xml
В документации есть пример, там все понятно.
Простo задайте balloon.options={...}
, где вместо ... добавьте требуемое вам содержимое.
Скорее всего так будет все работать.
Но это уже ни коем образом не относиться к моему компоненту, а требует просто знание yandex api. Так что смотрите документацию, и Бог вам в помощь.
Эту ветку я закрываю.
Если возникнут пожелания или вопросы по моему компоненту, буду рад помочь.
Я так понимаю, что таким образом будет производится только инициализация, но не прослушивание:
А как должен выглядеть код, если нужно ввести обе координаты через input форму вручную или вытащить из репозитария после его подгрузки? Похоже, наиболее близкий пример этот: http://tulov-alex.ru/2.1/geolocation/api, но всё же пока трудно применимый для конкретного случая.