2017-09-03 77 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

相关问题