你好,我正試圖將谷歌地圖與Knockout腳本綁定。 幾乎所有的工作,但我不能強迫infowindows出現在事件。 沒有敲出我的代碼的作品,但它沒有。 下面我的js代碼:InfoWindow沒有顯示
var infowindow;
function point(name, lat, long) {
this.name = name;
this.lat = ko.observable(lat);
this.long = ko.observable(long);
var marker = new google.maps.Marker({
position: new google.maps.LatLng(lat, long),
title: name,
map: map,
draggable: true
});
//if you need the poition while dragging
google.maps.event.addListener(marker, 'drag', function() {
var pos = marker.getPosition();
this.lat(pos.lat());
this.long(pos.lng());
}.bind(this));
//if you just need to update it when the user is done dragging
google.maps.event.addListener(marker, 'dragend', function() {
var pos = marker.getPosition();
this.lat(pos.lat());
this.long(pos.lng());
}.bind(this));
google.maps.event.addListener(marker, 'mouseover', function() {
infowindow = new google.maps.InfoWindow({ content: "empty" });
console.log("mouseover");
infowindow.setContent(this.title);
infowindow.open(map, this);
}.bind(this));
}
var map = new google.maps.Map(document.getElementById('googleMap'), {
zoom: 5,
center: new google.maps.LatLng(55, 11),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var viewModel = {
points: ko.observableArray([
new point('Test1', 55, 11),
new point('Test2', 56, 12),
new point('Test3', 57, 13)])
};
function addPoint() {
viewModel.points.push(new point('a', 58, 14));
}
ko.applyBindings(viewModel);
現在我的問題:
是簡單的方法,使它的工作原理。如果是的話,任何人都可以建議我在哪裏尋找它?
你說得對。沒有這個.title。在更改爲this.name並使用console.log()後,我可以看到它顯示出好名字,但仍然沒有infoWindow。所以知道我確定這個問題在這一行:infowindow.open(map,this); – szpic