GoogleマップでAngularを学習していて、ng-ifディレクティブで制御されているdiv内のマップをレンダリングするのに問題があります。条件変更時にレンダリングdivが表示されない場合は、
私のアプリケーションでは、$ scope.location関数から座標を受け取ったときに地図をレンダリングしたいと思います。次に、ボタンをクリックして、$ scope.myRideを呼び出して、地図上にマーカーを配置します。しかし、何が起こっているのかは、ボタンをクリックするまでマップがレンダリングされないということです。 $ scope.map内の座標は、$ scope.locationから実際の座標を受け取るまでプレースホルダーとして機能します。 どのような援助を大幅に理解されるであろう:)以下
angular.module('MapView',[])
.config(function($stateProvider){
$stateProvider
// the state will go on the html that you want route the user.
.state('mapView', {
url: '/mapView',
templateUrl: 'app/mapView/mapView.html',
controller: function($scope){
$scope.map = { center: { latitude: 38, longitude: -122 }, zoom: 15 };
$scope.output = document.getElementById("loc");
$scope.maker = {};
$scope.coords = {};
$scope.mockUsers = [{username: 'young', mess: 'I need a ride at 9am'},{username: 'young', mess: 'I need a ride at 9am'}, {username: 'young', mess: 'I need a ride at 9am'}]
$scope.location = function(){
if (!navigator.geolocation){
output.innerHTML = "<p>Geolocation is not supported by your browser</p>";
return;
}
navigator.geolocation.getCurrentPosition(function(position){
console.log('current position',position.coords)
$scope.map.center.latitude = position.coords.latitude;
$scope.coords.lat = position.coords.latitude; //added this
$scope.map.center.longitude = position.coords.longitude;
$scope.coords.lon = true; // added this
}, function(){
$scope.output.innerHTML = "Unable to retrieve your location";
});
}()
$scope.myRide = function(){
$scope.maker.latitude = $scope.map.center.latitude;
$scope.maker.longitude = $scope.map.center.longitude;
}
},
controllerAs: 'LoginCtrl'
});
})
はHTMLである:私はいくつかのアーティスト同士のコラボレーションを有する
<div ui-sref='mapView' >
<div ng-show = "coords.lon == true">Hello</div>
<div id="loc"></div>
<div id="mapDiv" ng-if="coords.lon">
<ui-gmap-google-map center='map.center' zoom='map.zoom' maker=>
<ui-gmap-marker coords="maker" icon="icon" idkey="1"></ui-gmap-marker>
</ui-gmap-google-map>
</div>
<div class="btn-Center">
<button class="btn btn-danger" ng-click='myRide()' >Ride</button>
</div>
<div id="mapUsers">
<div class="clear" ng-repeat='user in mockUsers'>
<div class="mapUserImg">
<img class="img-responsive" src="http://falconbus.in/images/site/user_icon.png">
</div>
<h1> {{ user.username }} </h1>
<p> {{ user.mess}} </p>
</div>
</div>
</div>
試して、NG-IFオープン新しいスコープそのng-showは同じスコープを使用します。 – Pablote
ありがとうございますが、残念ながらng-showは状況をさらに悪化させます。マップはまだ自動的にレンダリングされません。ボタンをクリックすると地図ウィンドウが開きますが空白になります。 – jcarapia