我有这个
var markersList = document.getElementById('markersList');
L.MarkerCluster.include({
spiderfy: function(e) {
var childMarkers = this.getAllChildMarkers();
this._group._unspiderfy();
this._group._spiderfied = this;
// Fill the markersList.
markersList.innerHTML = childMarkers
.map((marker, index) => `<li>Marker ${index + 1}:
${marker.getLatLng()}</li>`)
.join('');
// Show the modal.
console.log(markersList);
$(".modalResult").modal('show');
},...
上面在控制台中给了我
<li>Marker 1: LatLng(45.49934, 9.37966)</li>
<li>Marker 2: LatLng(45.49934, 9.37966)</li>
我需要能够以字符串45.49934, 9.37966
的形式获得,因为它们是相同的值,所以我只需要一个,就需要它作为字符串,因为稍后我将不得不将其插入为输入值:
<input type="hidden" value="45.49934, 9.37966">
答案 0 :(得分:1)
如果我正确理解了您的问题,则可以通过以下正则表达式从getLatLng()
的结果中提取lat和lng值:
/(-?\d+.\d*)/gi
传递给.match()
此正则表达式将从getLatLng()
的结果中提取两个数字;一个用于经纬度,另一个用于经纬度,然后可以将其组合以获取要用于输入元素的value属性的requiredString
:
{
spiderfy: function(e) {
var childMarkers = this.getAllChildMarkers();
this._group._unspiderfy();
this._group._spiderfied = this;
// Fill the markersList.
markersList.innerHTML = childMarkers.map((marker) =>
`<li>Marker: ${marker.getLatLng()}</li>`).join('');
// If there are any childMarkers
if(childMarkers.length > 0) {
// Match the lat and lng numbers from the string returned by getLatLng()
const [lat, lng] = `${ childMarkers[0].getLatLng() }`
.match(/(-?\d+.\d*)/gi);
// Construct the required string value from the extracted numbers
const requiredString = `${ lat }, ${ lng }`;
// Use requiredString to populate the value attribute of the
// input field in OP
console.log(requiredString);
}
// Show the modal.
console.log(markersList);
$(".modalResult").modal('show');
}
}
答案 1 :(得分:0)
您可以使用children
,就像这样:
markersList.children[0].innerText