2017-09-03 5 views
1

내가 작업하고있는 작은지도 프로젝트가있어 KnockoutJS를 몇 가지 작업을 처리하기위한 믹스로 가져 오기로 결정할 때까지 훌륭하게 작업했습니다. 프런트 엔드에 표시하기 쉽도록 관찰 가능한 배열을 통해 마커를 정의했습니다. 그러나 맵에 마커를 배치하도록 호출하려고하면 마커가 표시되지 않습니다. 나는 아래의 코드에서 위도/LNG 객체 리터럴을 제거합니다 (그러나 배열의 한 부분으로 숫자를 유지) 그냥녹아웃 오브젝트 리터럴이 Google지도에서 작동하지 않습니까?

markers()[i][1] 

각각
markers()[i][2] 

를 통해 그들을 호출 할 경우, 나는 마커를 얻을 . 하프! 나는 녹아웃 워드 프로세서를 부어 봤는데 이것에 대한 정보를 찾지 못했습니다. 어떤 콘솔 오류도 발생시키지 않습니다.지도에 마커가 없습니다. 어떤 도움을 주셔서 감사합니다!

var markers = ko.observableArray([ 
    [{ Name: 'Eye On Entrepreneurs' }, { lat: 45.913750 }, { lng: -89.257755 }], 
    [{ Name: 'Trigs of Eagle River' }, { lat: 45.915717 }, { lng: -89.240019 }], 
    [{ Name: 'Eagle River Airport' }, { lat: 45.934099 }, { lng: -89.261834 }] 
]); 

function initMap() { 
    map = new google.maps.Map(document.getElementById('map'), { 
    center: {lat: 45.917034, lng: -89.248168}, 
    zoom: 15, 
    disableDefaultUI: true 
    }); 

    for (i = 0; i < markers().length; i++){ 
    var position = new google.maps.LatLng(markers()[i].lat, markers()[i].lng); 
    marker = new google.maps.Marker({ 
     position: position, 
     map: map, 
     title: markers()[i].name 
    }); 
    } 
} 

답변

2

저는 현재 사무실의 KnockoutJS 및 OracleJET와 협력하고 있습니다.

잘못된 것은 아니지만 observableArray가 더 많은 배열을 포함하고있는 지금까지는 유스 케이스를 보지 못했습니다. observableArray 부모 객체 안에 객체를 놓기 만하면됩니다. 귀하의 코드를 다음과 같이 수정했습니다 :

this.markers = ko.observableArray([ 
       {Name: 'Eye On Entrepreneurs', lat: 45.913750, lng: -89.257755}, 
       {Name: 'Trigs of Eagle River', lat: 45.915717, lng: -89.240019}, 
       {Name: 'Eagle River Airport', lat: 45.934099, lng: -89.261834} 
      ]); 

잘 작동합니다.

그리고 오타가 있습니다. 대문자 'n'을 사용하십시오. title: self.markers()[i].Name

+0

뷰 모델에 추가하면 속임수를 쓰게됩니다. 도움을 주셔서 감사합니다. – IkeDoud