Php 如何根据位置列表从地图更新标记簇?

Php 如何根据位置列表从地图更新标记簇?,php,jquery,html,google-maps,Php,Jquery,Html,Google Maps,在这个页面中,我在顶部有一个由社区名称组成的表格,在这个表格下面我有一个谷歌地图,它显示了这些社区名称的标记位置,这些社区名称一旦放大就会显示在集群中。现在我要做的是,当我单击表行中的delete按钮(即通过PHP函数delete_btn())时,我需要删除对应于表行的特定标记,并在映射中使用delete按钮位置,同时更新集群编号。我怎样才能做到这一点 我已在下面发布了我的代码结构: var海滩=[ [“哈林哈塔”,21.984606,89.974250], [“西孟加拉邦,印度”, 21.6

在这个页面中,我在顶部有一个由社区名称组成的表格,在这个表格下面我有一个谷歌地图,它显示了这些社区名称的标记位置,这些社区名称一旦放大就会显示在集群中。现在我要做的是,当我单击表行中的delete按钮(即通过PHP函数delete_btn())时,我需要删除对应于表行的特定标记,并在映射中使用delete按钮位置,同时更新集群编号。我怎样才能做到这一点

我已在下面发布了我的代码结构:

var海滩=[
[“哈林哈塔”,21.984606,89.974250],
[“西孟加拉邦,印度”,
21.681855, 88.584980
]
];
var标记=[];
var映射//在此处设置范围,以便各种函数可以使用它们
函数clickHandlerDelegate(clickEvent){
如果(clickEvent.target.className.indexOf('deleteMarker')>-1){
var index=clickEvent.target.dataset.id;
标记[index].setMap(空);
}
}
函数初始化(){
map=new google.maps.map(document.getElementById('map'){
缩放:8,
中心:新google.maps.LatLng(beats[0][1],beats[0][2]),
mapTypeId:google.maps.mapTypeId.ROADMAP
});
var infowindow=new google.maps.infowindow();
var标记,i;
变量形状={
coords:[1,1,1,20,18,20,18,1],
类型:“poly”
};
对于(i=0;i<0.length;i++){
marker=新的google.maps.marker({
职位:新google.maps.LatLng(beats[i][1],beats[i][2]),
地图:地图
});
google.maps.event.addListener(标记,'click',(函数(标记,i){
返回函数(){
infowindow.setContent(海滩[i][0]);
信息窗口。打开(地图、标记);
}
})(marker,i));
标记器。推(标记器);
}
var markerCluster=新的MarkerClusterer(地图、标记、{
imagePath:'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'
});
}
google.maps.event.addDomListener(窗口“加载”,初始化);
//设置代表
document.addEventListener('DOMContentLoaded',function(){
document.addEventListener(“单击”,单击HandlerDelegate);
});
html,
身体,
#地图{
身高:100%;
宽度:100%;
边际:0px;
填充:0px
}

S.N。
社区
行动
1.
哈林哈塔
去除
2.
印度西孟加拉邦
去除
对于,方法列表包含

布尔删除标记(标记:google.maps.marker)
从群集中删除标记

为了在click处理程序(即clickHandlerDelegate())中使用该方法,需要将声明(即带有关键字var)移出initialize函数:

var map; //set scope here so various functions can use them
var markerCluster;
然后在实例化该变量时,删除var关键字:

最后,在clickHandler函数中,将标记(即,
markers[index]
)传递给对removeMarker()方法的调用:

请参见下面的示例中演示的内容。添加了第三个标记,以证明随着第一个位置的删除,集群编号下降到2

var海滩=[
[“哈林哈塔”,21.984606,89.974250],
[“西孟加拉邦,印度”,
21.681855, 88.584980
],
[“新迪加海滩”,
21.617401, 87.500898
]
];
var标记=[];
var映射//在此处设置范围,以便各种函数可以使用它们
var-markerCluster;
函数clickHandlerDelegate(clickEvent){
如果(clickEvent.target.className.indexOf('deleteMarker')>-1){
var index=clickEvent.target.dataset.id;
标记[index].setMap(空);
markerCluster.removeMarker(markers[index]);
}
}
函数初始化(){
map=new google.maps.map(document.getElementById('map'){
缩放:8,
中心:新google.maps.LatLng(beats[0][1],beats[0][2]),
mapTypeId:google.maps.mapTypeId.ROADMAP
});
var infowindow=new google.maps.infowindow();
var标记,i;
变量形状={
coords:[1,1,1,20,18,20,18,1],
类型:“poly”
};
对于(i=0;i<0.length;i++){
marker=新的google.maps.marker({
职位:新google.maps.LatLng(beats[i][1],beats[i][2]),
地图:地图
});
google.maps.event.addListener(标记,'click',(函数(标记,i){
返回函数(){
infowindow.setContent(海滩[i][0]);
信息窗口。打开(地图、标记);
}
})(marker,i));
标记器。推(标记器);
}
markerCluster=新的MarkerClusterer(地图、标记、{
imagePath:'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'
});
}
google.maps.event.addDomListener(窗口“加载”,初始化);
//设置代表
document.addEventListener('DOMContentLoaded',function(){
document.addEventListener(“单击”,单击HandlerDelegate);
});
html,
身体,
#地图{
身高:100%;
宽度:100%;
边际:0px;
填充:0px
}

S.N。
社区
行动
1.
哈林哈塔
去除
2.
印度西孟加拉邦
去除
3.
新迪加海滩
去除

哦,我的错误是我没有在顶部初始化markerCluster。如果您添加了您试图删除的标记,以及不起作用的标记,那么这将是可以回答的,因为它太宽了,无法回答。
}
markerCluster = new MarkerClusterer(map, markers, {
    imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'
});
function clickHandlerDelegate(clickEvent) {
  if (clickEvent.target.className.indexOf('deleteMarker') > -1) {
    var index = clickEvent.target.dataset.id;
    markers[index].setMap(null);
    markerCluster.removeMarker(markers[index]);
  }
}