 <p>I can't simulate this, but after read your code I assume this code will work.. First add marker as your pin property:</p> <pre><code>self.mapPin = function (name, lat, lon, text) { this.name = ko.observable(name); this.lat = ko.observable(lat); this.lon = ko.observable(lon); this.text = ko.observable(text); this.marker = new google.maps.Marker({ position: new google.maps.LatLng(lat, lon), map: map, animation: google.maps.Animation.DROP }); // removed for clarity }; </code></pre> <p>then set pin marker visibility while filtering your pins</p> <pre><code>self.filterPins = ko.computed(function () { var search = self.query().toLowerCase(); return ko.utils.arrayFilter(self.pins(), function (pin) { var match = pin.name().toLowerCase().indexOf(search) &gt;= 0; pin.marker.setVisible(match); // maps API hide call return match; }); }); </code></pre> <p><a href="https://developers.google.com/maps/documentation/javascript/reference#Marker" rel="nofollow">Google Maps Marker Documentation</a></p>