2016-03-22 20 views
0

İşaretleyicilere eklenecek bilgi pencereleri için forEach() yöntemini ve map() yöntemini kullanarak haritama İşaretçiler ve bilgi pencereleri eklemeye çalışıyorum. Knockout.js kullanarak dizi yöntemleri ile Harita İşaretleyicileri Google Haritalar'a Ekleme

//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()); 

Tarayıcımdaki sayfayı yüklemek

, ben görüntülenmesini sağlamanın tek şey haritası kendisidir:

İşte şimdiye kadar benim kodudur. Konsolun hataları olup olmadığını kontrol ettim ve ben bir şey özlüyor muyum? veya bu fonksiyon kapsamındaki bir konu olabilir mi?

+1

Doğru hata mesajını aldığınıza emin misiniz? (Yani "Marker" yerine "marker" değil mi?). Ayrıca, kodunuzu biraz kırpmış olmanız durumunda sorununuzu çözmemize/tekrarlamaya daha kolay olurdu, rehberlik için [mcve] 'ye bakın. – Jeroen

+0

Marker, google.maps.Marker yapıcısıdır. Marker değişken olarak nerede depolamaya çalışıyorum. – cperry24

+0

Bu noktada google js script dosyası yüklü mü? –

cevap

0

var marker = new google.map.Marker çağrısında google.map nesnesine başvuruyorsunuz gibi görünüyor, göründüğü gibi derleyici başvurulan nesneyi bulamadığı anlamına gelir. Referans vermeyi düşündüğünüz şeyin, map = new google.maps.Map haritasını oluştururken doğru şekilde referansladığınız google.maps (çoğul) nesnesi olduğuna inanıyorum.

Düzeltmeyi yaptıktan sonra kodunuzun görüntüsü için ekli bağlantıya bakın. Link to image of your Google Map's App

İlgili konular