Javascript 打开带有html生成的外部链接的弹出窗口
我(通过html)创建了一个链接列表,其中包含通过PHP从数据库生成的ID 这些链接与在地图上绘制的geoJson中生成的数据相同Javascript 打开带有html生成的外部链接的弹出窗口,javascript,leaflet,Javascript,Leaflet,我(通过html)创建了一个链接列表,其中包含通过PHP从数据库生成的ID 这些链接与在地图上绘制的geoJson中生成的数据相同 var geojson = L.geoJson(geojsonSample, { pointToLayer: function(feature, latlng) { var smallIcon = new L.Icon({ iconSize: [50, 50],
var geojson = L.geoJson(geojsonSample, {
pointToLayer: function(feature, latlng) {
var smallIcon = new L.Icon({
iconSize: [50, 50],
iconAnchor: [13, 27],
popupAnchor: [1, -24],
autoPanPadding: [30,30],
iconUrl: feature.properties.icon.iconUrl
});
return L.marker(latlng, {icon: smallIcon });
},
onEachFeature: function(feature, layer) {
layer._leaflet_id = feature.properties.control;
var popupText = feature.properties.description
layer.bindPopup(popupText)
layer.bindTooltip(feature.properties.title).openTooltip();
}
}).addTo(map);
// markers.addLayer(geojsonAux);
var markers = L.markerClusterGroup();
markers.addLayer(geojson).addTo(map);
map.fitBounds(geojson.getBounds().pad(Math.sqrt(2) /4));
///geojson示例
var geojsonSample = {
"type": "FeatureCollection",
"features": [{"type":"Feature","geometry":{
"type": "Point",
"coordinates": [
-72,
4
]
},"properties":{
"title": "Espacio Akana",
"category": "Chile",
"icon": {
"iconUrl": "https:\/\/tupale.co\/milfs\/images\/secure\/?file=300\/82afc44d9c358234ebb411f848481ea4.png",
"iconSize": [
60
]
},
"localizacion": "-72 4 15 ",
"control": "69c90579b5cbccc80b09df24057ff82b",
"description": "primera descripcion "
}},{"type":"Feature","geometry":{
"type": "Point",
"coordinates": [
-70.3976891,
-23.64939325
]
},"properties":{
"title": "Teatro Pedro de la Barra",
"category": "Chile",
"icon": {
"iconUrl": "https:\/\/tupale.co\/milfs\/images\/secure\/?file=300\/82afc44d9c358234ebb411f848481ea4.png",
"iconSize": [
60
]
},
"localizacion": "-70.3976891 -23.64939325 16 ",
"control": "7850c035cc53ee5719aa8677fb805ea7",
"description": "segunda descripcion "
}} ]};
///外部html链接示例
<ul class="list-group ">
<li class="list-group-item"><a id="7850c035cc53ee5719aa8677fb805ea7" href="#" > Teatro Pedro de la Barra</a> </li>
<li class="list-group-item"><a id="69c90579b5cbccc80b09df24057ff82b" href="#" > Espacio Akana</a> </li>
</ul>
如何通过调用每个链接的onclik事件打开弹出窗口?
在中演示如果我说得对,您希望根据单击的
标记的id打开标记弹出窗口。您可以通过向所有
标记添加一个类并在那里绑定以下函数,或者在创建标记时将函数Dynamicly绑定到每个
标记来实现这一点。我已经这样做了,它工作得很完美,但请注意,我还没有测试下面的代码,可能需要进行一些调整
function openMarkerPopup(e){
const markerID = e.id;
const marker = markers.getLayer(markerID);
marker.openPopup();
}
与2天前的问题差不多-在这个问题中,链接是从传单动态生成的,在我的问题中,链接是从php生成的,在传单javascript之外。我在这里尝试过,但它不起作用“Uncaught TypeError:无法读取未定义的属性“openPopup”如果您在JSFIDLE上像您的示例一样使用onclick,那么您必须这样做
onclick=“openMarkerPopup(this)
并更改我上面编辑的函数。这仍然不起作用,因为在fiddle中,您使用的geoJson与您在问题中提供的geoJson不同,其中properties.control未定义,因此此like未指定正确的值层。_-foliate\u id=feature.properties.control;
正确,geojson是错误的,我已经更正了它并编辑了代码,但它仍然不起作用,现在我有疑问:图层是否可以。_传单_id是非数值?Hello@ivansanchez,你能帮我们复习一下吗?