Javascript 信息窗口不显示

Javascript 信息窗口不显示,javascript,google-maps,knockout.js,Javascript,Google Maps,Knockout.js,您好,我正在尝试用敲除脚本绑定谷歌地图。 几乎所有的东西都能工作,但我不能强迫infowindows在活动中出现。 没有敲除,我的代码可以工作,但使用它却不行。 下面是我的js代码: var infowindow; function point(name, lat, long) { this.name = name; this.lat = ko.observable(lat); this.long = ko.observable(long); var marker

您好,我正在尝试用敲除脚本绑定谷歌地图。 几乎所有的东西都能工作,但我不能强迫infowindows在活动中出现。 没有敲除,我的代码可以工作,但使用它却不行。 下面是我的js代码:

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);
现在我的问题是:


这是一个简单的方法让它工作。如果是,有人能告诉我在哪里可以找到它吗?

我自己从来没有使用过knockout,但是将它与地图结合起来看起来并不简单,以下是一些阅读材料:


您提供的maps代码看起来是正确的,所以我认为问题在于敲除集成

可能是您使用的

添加
var self=this作为点函数中的第一行&使用
self
引用点中的属性

在鼠标悬停事件中,这是指标记、地图还是视图模型?如果拖动事件的值设置正确,则这是point viewmodel,在这种情况下,在您调用的鼠标悬停事件中,
this.title
。没有标题

function point(name, lat, long) {
    var self = this;
    self.name = name;
    self.lat = ko.observable(lat);
    self.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();
        self.lat(pos.lat());
        self.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();
        self.lat(pos.lat());
        self.long(pos.lng());
    }.bind(this));
    google.maps.event.addListener(marker, 'mouseover', function () {
        infowindow = new google.maps.InfoWindow({ content: "empty" });
        console.log("mouseover");
        infowindow.setContent(marker.title);
        infowindow.open(map, this);
    }.bind(this));
}

你是对的。没有这个标题。更改为this.name并使用console.log()后,我可以看到它显示了良好的名称,但仍然没有信息窗口。所以我确信问题出在这一行:infowindow.open(map,this);