Итак, у меня есть небольшой проект с картами, над которым я работаю, отлично поработал, пока я решил принести KnockoutJS в микс для обработки нескольких вещей. Я определил свои маркеры с помощью наблюдаемого массива для удобства отображения в интерфейсе. Но, если я попытаюсь назвать это, чтобы поместить маркеры на мою карту, я не получу никаких маркеров. Если я удалю литералы объекта lat/lng в коде ниже (но сохраните числа как часть массива) и просто вызовите их через
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
});
}
}
В настоящее время я работаю с KnockoutJS и OracleJET в своем офисе.
Хотя это неверно, я до сих пор не видел прецедентов, где у наблюдаемого массива больше массивов. Мы просто размещаем объекты внутри родительского наблюдаемого массива. Я изменил ваш код следующим образом:
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