Jquery 如何根据弹出信息验证正在单击的传单标记是否为我想要的标记?
在传单中,我的一些标记是这样建造的Jquery 如何根据弹出信息验证正在单击的传单标记是否为我想要的标记?,jquery,leaflet,Jquery,Leaflet,在传单中,我的一些标记是这样建造的 $div1 = "<div class='xx'>OBJ: $objmrkr<br></div><div class='gg'>W3W: $w3w</div>"; //echo "$div1<br>"; $div2 = "<div class='cc'>Co
$div1 = "<div class='xx'>OBJ: $objmrkr<br></div><div class='gg'>W3W: $w3w</div>"; //echo "$div1<br>";
$div2 = "<div class='cc'>Comment:<br>$comment</div>"; //echo "$div2<br>";
$div3 = "<div class='bb'><br>Cross Roads:<br>$cr</div><br><div class='gg'>$row[lat],$row[lng]<br>Grid: $gs<br><br>Captured:<br>$row[timestamp]</div>"; //echo "$div3<br>";
$objMarkers .= " var $objmrkr = new L.marker(new L.LatLng($row[lat],$row[lng]),{
rotationAngle: $dup,
rotationOrigin: 'bottom',
opacity: 0.75,
contextmenu: true,
contextmenuWidth: 140,
contextmenuItems: [{ text: 'Click here to add mileage circles',callback: circleKoords}],
icon: L.icon({iconUrl: '$markername', iconSize: [32, 34]}),
title:`marker_$markNO`}).addTo(fg).bindPopup(`$div1<br>$div2<br>$div3`).openPopup();
$('Objects'._icon).addClass('objmrkr');
";
};
$div1=“OBJ:$objmrkr
W3W:$W3W”//回显“$div1
”;
$div2=“注释:
$Comment”//回显“$div2
”;
$div3=“
十字路口:
$cr
$row[lat],$row[lng]
网格:$gs
捕获:
$row[timestamp]”//回显“$div3
”;
$objMarkers.=“var$objmrkr=新的L.marker(新的L.LatLng($row[lat],$row[lng]){
旋转角度:$dup,
旋转原点:“底部”,
不透明度:0.75,
上下文菜单:正确,
上下文宽度:140,
contextmenuItems:[{文本:'单击此处添加里程圈',回调:circleKoords}],
icon:L.icon({iconUrl:'$markername',iconSize:[32,34]}),
标题:`marker\$markNO`).addTo(fg).bindpoppup(`$div1
$div2
$div3`).openPopup();
$('Objects.\u icon).addClass('objmrkr');
";
};
当右键单击circleKoords函数时,调用该函数,但在运行其代码之前,我需要知道是否有正确的标记。正确的标记在标题中有一个“OBJ:”,如示例所示。这似乎是一个笨拙的方法,但我不知道另一个。我的问题是如何验证“OBJ:”是否在该标记的弹出窗口中?
有很多类似的问题,但似乎都不起作用,我不确定这是因为我使用的是contextmenu还是其他什么。
我试过了;
var imanobj=e.xx之类的东西,但似乎什么都得不到我需要的?
想法?您需要获取(标记的)弹出窗口的内容
marker.getPopup().getContent()
,然后您可以使用content.indexOf(“OBJ”)>-1检查它是否包含字符串
marker.on('contextmenu',(e)=>{
var marker = e.target;
if(marker.getPopup()){
var popup = marker.getPopup();
if(popup.getContent().indexOf("OBJ") > -1){
alert('Clicked Marker has OBJ')
}
}
})
设置OBJ
标志的其他方法:
如果想知道标记是否为OBJ标记
,只需添加一个属性标志即可<代码>$objmrkr.objFlag=true代码>
$objMarkers .= " var $objmrkr = new L.marker(new L.LatLng($row[lat],$row[lng]),{
rotationAngle: $dup,
rotationOrigin: 'bottom',
opacity: 0.75,
contextmenu: true,
contextmenuWidth: 140,
contextmenuItems: [{ text: 'Click here to add mileage circles',callback: circleKoords}],
icon: L.icon({iconUrl: '$markername', iconSize: [32, 34]}),
title:`marker_$markNO`}).addTo(fg).bindPopup(`$div1<br>$div2<br>$div3`).openPopup();
$('Objects'._icon).addClass('objmrkr');
$objmrkr.objFlag = true;
";
在php字符串中实现侦听器:
(我没有检查是否存在任何php错误)
$objMarkers.=“var$objmrkr=新的L.marker(新的L.LatLng($row[lat],$row[lng]){
旋转角度:$dup,
旋转原点:“底部”,
不透明度:0.75,
上下文菜单:正确,
上下文宽度:140,
contextmenuItems:[{文本:'单击此处添加里程圈',回调:circleKoords}],
icon:L.icon({iconUrl:'$markername',iconSize:[32,34]}),
标题:`marker\$markNO`).addTo(fg).bindpoppup(`$div1
$div2
$div3`).openPopup();
$('Objects.\u icon).addClass('objmrkr');
$objmrkr.on('contextmenu',函数(e){
var标记=e.target;
if(marker.getPopup()){
var popup=marker.getPopup();
if(popup.getContent().indexOf('OBJ')>-1){
警报('单击的标记有对象')
}
}
})";
您需要获取(标记的)弹出窗口的内容marker.getPopup().getContent()
,然后您可以使用content.indexOf(“OBJ”)>-1检查是否包含字符串
marker.on('contextmenu',(e)=>{
var marker = e.target;
if(marker.getPopup()){
var popup = marker.getPopup();
if(popup.getContent().indexOf("OBJ") > -1){
alert('Clicked Marker has OBJ')
}
}
})
设置OBJ
标志的其他方法:
如果想知道标记是否为OBJ标记
,只需添加一个属性标志即可<代码>$objmrkr.objFlag=true代码>
$objMarkers .= " var $objmrkr = new L.marker(new L.LatLng($row[lat],$row[lng]),{
rotationAngle: $dup,
rotationOrigin: 'bottom',
opacity: 0.75,
contextmenu: true,
contextmenuWidth: 140,
contextmenuItems: [{ text: 'Click here to add mileage circles',callback: circleKoords}],
icon: L.icon({iconUrl: '$markername', iconSize: [32, 34]}),
title:`marker_$markNO`}).addTo(fg).bindPopup(`$div1<br>$div2<br>$div3`).openPopup();
$('Objects'._icon).addClass('objmrkr');
$objmrkr.objFlag = true;
";
在php字符串中实现侦听器:
(我没有检查是否存在任何php错误)
$objMarkers.=“var$objmrkr=新的L.marker(新的L.LatLng($row[lat],$row[lng]){
旋转角度:$dup,
旋转原点:“底部”,
不透明度:0.75,
上下文菜单:正确,
上下文宽度:140,
contextmenuItems:[{文本:'单击此处添加里程圈',回调:circleKoords}],
icon:L.icon({iconUrl:'$markername',iconSize:[32,34]}),
标题:`marker\$markNO`).addTo(fg).bindpoppup(`$div1
$div2
$div3`).openPopup();
$('Objects.\u icon).addClass('objmrkr');
$objmrkr.on('contextmenu',函数(e){
var标记=e.target;
if(marker.getPopup()){
var popup=marker.getPopup();
if(popup.getContent().indexOf('OBJ')>-1){
警报('单击的标记有对象')
}
}
})";
我喜欢这个答案的简单。我只需要弄清楚如何使用您提供的marker.on。您只需要在php字符串中添加marker.on
代码。您需要使用$objmrkr
更改变量名标记
。我更新了答案,向您显示我用您的代码替换了我的代码,但不幸的是,我得到了一个“文件结束错误”。对我来说,这通常意味着我丢失了一个勾号、逗号或括号等。所以我搜索了一下,但什么也没找到。所以我读了又读了你关于将变量标记更改为$objmrkr的评论,并将结尾改为:;“$objmarker.on('context menu',(e)=>{..”但结尾是;解析错误:语法错误,在/var/www/html/objMarkers.php的第106行出现意外的“=>”(T_双_箭头)。您可以看到我正在努力解决语法问题。我不确定最后一部分是否在“}”之后'或在两人给出相同结果之前我更新了我的答案,请再试一次!我知道了!!!它正在工作。这是有史以来最好的答案。我喜欢这个答案的简单性。我只需要知道如何使用你提供的标记。你只需要在php字符串中添加标记。on
代码。你需要更改变量名标记
使用$objmrkr
。我更新了答案,向您显示我用您替换了我的代码