2017-09-03 82 views
1

所以我有一個我正在研究的小地圖項目,一直很棒,直到我決定將KnockoutJS帶入處理一些事情的組合中。爲了便於在前端顯示,我通過可觀察數組定義了標記。但是,如果我嘗試將它稱爲在我的地圖中放置標記,則不會顯示任何標記。如果我刪除下面的代碼緯度/經度對象文字(但保留號碼作爲陣列的一部分),只是通過Knockout Object Literals不適用於Google Maps?

markers()[i][1] 

markers()[i][2] 

分別打電話給他們,我得到的標記。 HALP!我傾注了淘汰賽文件,並沒有找到任何有關這方面的信息。不拋出任何控制檯錯誤 - 只是在地圖上沒有任何標記。非常感謝任何幫助!

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

相關問題