我在Google地图上显示了许多标记。标记从dB加载并添加到数组markers
:
var markers = [
{
"ID": "99",
"title": "Ut vestibulum tincidunt consectetur vestibulum.",
"coords": "45.6496292, 13.7740742",
},
{
"ID": "259",
"title": "Faucibus tempus vivamus scelerisque vestibulum.",
"coords": "45.6455002, 13.7595193",
},
{
"ID": "261",
"title": "Taciti ante scelerisque consequat inceptos nunc.",
"coords": "45.6455002, 13.7595193",
}
];
点击标记 infoWindow 会正确弹出:
gooole.maps.event.addListener(marker, 'click', function() {
infowindow.setContent(this.content);
infowindow.open(map, this);
});
在 infoWindow 里面有一个链接,当点击时弹出一个boostrap对话框,允许编辑 infoWindow 的内容。该对话框的字段通过Ajax(jQuery)填充。更改字段并保存更改后,对话框将关闭,更改后的数据会立即显示在 infoWindow 中,同时保持打开状态。
到目前为止一切正常。
我没有成功的问题是,当我关闭“编辑过的”时, infoWindow 或者我点击其他标记,以便'编辑' infoWindow 关闭,然后我重新打开之前编辑过的' infoWindow 未显示更改。
我认为我可以简单地更改markers
数组中的值,例如:
setTitle(id, "This is the new title");
function setTitle(id, newtitle)
for (var i = 0; i < markers.length; i++) {
if (markers[i]["ID"] === id) {
markers[i]["title"] = newtitle;
return;
}
}
}
看到它&#39;反应&#39;在 infoWindow 中使用dinamically,但事实并非如此。 markers
数组内置于index.php
,而地图和对话框则分别通过ajax加载(map.php
和edit.php
)。我将markers
放在index.php
中,因此我确定它可以访问,事实上就是例如
console.log(markers[13]["title"]);
正确显示任何更改,但此更改未被保留&#39;要在&#39;编辑的&#39;中显示 infoWindow 。