Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何向地图上的标记添加删除按钮_Javascript_Html_Leaflet - Fatal编程技术网

Javascript 如何向地图上的标记添加删除按钮

Javascript 如何向地图上的标记添加删除按钮,javascript,html,leaflet,Javascript,Html,Leaflet,我正在使用的代码在我的HTML文件上使用传单嵌入地图。我想在地图上的标记上添加一个删除按钮。基本上是右上角的X。我试着加上 L.marker.bindPopup('<button id = "closeX" onclick="closeMarker()"> X</button>') L.marker.bindPopup('X') 像这样: searchControl.on('results', function (data) { results.clear

我正在使用的代码在我的HTML文件上使用传单嵌入地图。我想在地图上的标记上添加一个删除按钮。基本上是右上角的
X
。我试着加上

  L.marker.bindPopup('<button id = "closeX" onclick="closeMarker()"> X</button>')
L.marker.bindPopup('X')
像这样:

searchControl.on('results', function (data) {
    results.clearLayers();
    for (var i = data.results.length - 1; i >= 0; i--) {
      results.addLayer(L.marker(data.results[i].latlng));
    }
  L.marker.bindPopup('<button id = "closeX" onclick="closeMarker()"> X</button>')

  });
 var searchControl = L.esri.Geocoding.geosearch().addTo(map);

    var results = L.layerGroup().addTo(map);

    searchControl.on('results', function(data) {
      results.clearLayers();
      for (var i = data.results.length - 1; i >= 0; i--) {
        // here bind the popup
        results.addLayer(L.marker(data.results[i].latlng).bindPopup('<button id = "closeX" onclick="closeMarker()"> X</button>'));
      }
});
searchControl.on('results',函数(数据){
结果:clearLayers();
对于(var i=data.results.length-1;i>=0;i--){
results.addLayer(L.marker(data.results[i].latlng));
}
L.marker.bindPopup('X')
});

您发现,不能将
bindpoop
函数与
L.marker
一起使用,因为它会为该函数提供未捕获类型错误。还有其他方法吗?

您将弹出窗口绑定到标记,而不传递坐标,也不添加到地图中

你应该这样做:

searchControl.on('results', function (data) {
    results.clearLayers();
    for (var i = data.results.length - 1; i >= 0; i--) {
      results.addLayer(L.marker(data.results[i].latlng));
    }
  L.marker.bindPopup('<button id = "closeX" onclick="closeMarker()"> X</button>')

  });
 var searchControl = L.esri.Geocoding.geosearch().addTo(map);

    var results = L.layerGroup().addTo(map);

    searchControl.on('results', function(data) {
      results.clearLayers();
      for (var i = data.results.length - 1; i >= 0; i--) {
        // here bind the popup
        results.addLayer(L.marker(data.results[i].latlng).bindPopup('<button id = "closeX" onclick="closeMarker()"> X</button>'));
      }
});
var searchControl=L.esri.Geocoding.geosearch().addTo(map);
var results=L.layerGroup().addTo(map);
searchControl.on('results',函数(数据){
结果:clearLayers();
对于(var i=data.results.length-1;i>=0;i--){
//这里绑定弹出窗口
results.addLayer(L.marker(data.results[i].latlng).bindPopup('X'));
}
});

地理编码控制
身体{
保证金:0;
填充:0;
}
#地图{
位置:绝对位置;
排名:0;
底部:0;
右:0;
左:0;
}
VarMap=L.map('map').setView([40.91,-96.63],4);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'{
属性:“©;贡献者”
}).addTo(地图);
var searchControl=L.esri.Geocoding.geosearch().addTo(map);
var results=L.layerGroup().addTo(map);
searchControl.on('results',函数(数据){
结果:clearLayers();
对于(var i=data.results.length-1;i>=0;i--){
results.addLayer(L.marker(data.results[i].latlng).bindPopup('X'));
}
});

谢谢!我按照你的建议添加了bindpopup。但我仍然看不到任何弹出标记。然后我还将openpopup()添加到
results.addLayer(L.marker(data.results[I].latlng))中
。这也没用。你说看不到任何弹出窗口是什么意思?你运行了上面的示例吗?一旦你单击标记,弹出窗口就会显示,里面有X按钮。哦哦哦,对不起,你说得对。它正在工作。我不知道按钮显示是由单击标记提示的。实际上,我希望弹出窗口可以从mo中看到地图上有一个标记