2013-02-18 2 views
3

내가 Google지도 지침이 방법으로 사용하는 것을 시도하고있다 :AngularUI - 구글지도 -지도가 정의되지

컨트롤러 방법

$scope.myMarkers = []; 

$scope.mapOptions = { 
    center : new google.maps.LatLng(35.784, -78.670), 
    zoom : 15, 
    mapTypeId : google.maps.MapTypeId.ROADMAP 
}; 

$scope.addMarker = function($event) { 
    $scope.myMarkers.push(new google.maps.Marker({ 
     map : $scope.myMap, 
     position : $event.latLng 
    })); 
}; 

UpdateLocation.html

<div ng-repeat="marker in myMarkers" ui-map-marker="myMarkers[$index]" ui-event="{'map-click': 'openMarkerInfo(marker)'}"></div> 

<div id="map_canvas" ui-map="myMap" class="map" ui-event="{'map-click': 'addMarker($event)'}" ui-options="mapOptions"></div> 

지도를 완벽하게 표시되지만 방법이 addMarker입니다. 0 일 때 정의되지 않은 상태가됩니다.이 실행됩니다.

답변

3

컨트롤러 정의와 ui-map div 사이에 새 범위가 만들어 졌다고 생각합니다. 'myMap'속성이 컨트롤러 범위가 아닌 해당 범위에서 만들어지고 있습니다.

이러한 종류의 문제를 방지하려면 ui-map 지시문을 적절한 모델로 제공하십시오. 예를 들어 :

컨트롤러 :

$scope.model = { myMap: undefined }; 

HTML :

<div id="map_canvas" ui-map="model.myMap" class="map" ui-event="{'map-click': 'addMarker($event)'}" ui-options="mapOptions"></div> 

이것은 $scope.model$scope.model.myMap 내부 인해 범위의 prototypically 상속에지도 콘텐츠를 저장하기 위해 ui-map 지침을 강제로 개체는 하위 범위에서 사용할 수 있지만 항상 부모 범위 (컨트롤러 범위)에 속합니다.

+0

그 덕분에 !! 대단히 감사합니다 !! 이 문제로 많은 시간을 낭비했습니다. 그러나 나는 새로운 범위가 만들어지는 것을 이해하지 못합니다. 설명서가 말한대로 angular-ui를 사용하고 있습니다. – qopuir