forEach()
メソッドとマーカーにアタッチする情報ウィンドウをmap()
メソッドを使用してマップマーカーと情報ウィンドウをマップに追加しようとしています。ここでKnockout.jsを使用して配列メソッドを使用してGoogleマップにマーカーを追加する
は、これまでの私のコードです:私は私のブラウザでページをロードすると
//String to display in info window
var content;
//Declare Map variable and markers array
var map;
var marker;
var markers = [];
// cache Info window in a variable
var window = new google.maps.InfoWindow({});
//Create Instance of a map from the Google maps api
//Grab the reference to the "map" id to display map
//Set the map options object properties
function initMap() {
map = new google.maps.Map(document.getElementById("map"), {
center: {lat: 40.440624, lng: -79.995888},
zoom: 8,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
};
// tells the view model what to do when a change occurs
function gymLocation(value) {
this.name = ko.observable(value.name);
this.address = ko.observable(value.address);
this.description = ko.observable(value.description);
this.lat = ko.observable(value.lat);
this.lng = ko.observable(value.lng);
};
//ViewModel
function ViewModel() {
var self = this;
//Copies the values of initialLocations and stores them in sortedLocations(); observableArray
self.sortedLocations = ko.observableArray(initialLocations.slice());
//Adds new markers at each location in the initialLocations Array
self.sortedLocations().forEach(function(location) {
marker = new google.map.Marker({
position: location.latlng,
map: map,
title: location.name
});
markers.push(marker);
});
//Map info windows to each item in the markers array
self.markers.map(function(info) {
info.addListener('click', function() {
new google.maps.InfoWindow({
position: info.latlng,
map: map,
title: info.name
});
});
});
};
ko.applyBindings(ViewModel());
、私はディスプレイに得ることができる唯一のことは、マップ自体です。コンソールのエラーを確認して受信しました。
app.js:121 Uncaught TypeError: Cannot read property 'Marker' of undefined
私に何か不足していますか?またはこれが機能内のスコープに関する問題である可能性がありますか?
正確なエラーメッセージが表示されますか? (つまり、「マーカー」ではなく「マーカー」ではありませんか?)また、あなたのコードを少しトリミングした場合、私たちがあなたの問題を助けたり書き換えたりするのが簡単になります。[mcve]を見てください。 – Jeroen
マーカーはgoogle.maps.Markerコンストラクタです。どこにマーカーが変数であるのですか?それを格納しようとしています。 – cperry24
その時点でgoogle jsスクリプトファイルがロードされていますか? –