单击Leaflet地图中的某些标记时,会出现一个弹出窗体。表单完成后,我想将输入的字段以及有关标记的一些详细信息发送到单独的函数。我现在开始只是发送标记来测试它,但我遇到了一个问题。
但是当我通过该函数传递我的标记并通过console.log运行它时,它返回[Object object]而不是带有纬度,经度和其他东西的标记。
var newMarker = new VietMarker (map.getCenter(), {
draggable: true
});
var popupHTML = '<form id="add-marker-form">' +
'<div class="form-group">' +
'<label for="marker-title">Title</label>' +
'<input type="text" class="form-control" id="marker-title" required="true">' +
'</div>' +
'<div class="form-group">' +
'<label for="marker-contributor">Contributor</label>' +
'<input type="text" class="form-control" id="marker-contributor">' +
'</div>' +
'<div class="form-group">' +
'<label for="marker-yt-link">Video link</label>' +
'<input type="text" class="form-control" id="marker-yt-link">' +
'</div>' +
'<div class="form-group">' +
'<label for="marker-description">Description</label>' +
'<textarea class="form-control" rows="3" id="marker-description"></textarea>' +
'</div>' +
'<input type="button" id="marker-submit" class="btn btn-primary btn-block" onClick="testMarker(\'' + newMarker + '\');" value="Add to Map" />' +
'</form>';
newMarker.bindPopup(popupHTML).addTo(map);
在我的testMarker()函数中:
function testMarker (markerToAdd) {
console.log(markerToAdd);
}
在console.log中返回[Object object],没有子字段,而不是Marker对象。
答案 0 :(得分:0)
生成弹出HTML时,连接运算符(+)使您可以将newMarker
变量作为字符串插入。那是错误的。此时,newMarker
将转换为字符串,插入的值为"[Object object]"
。
您需要找到另一种方法将标记传递给您在按钮单击时调用的功能。
您可以拥有标记的哈希表:
markers = {};
markers['new'] = new VietMarker (map.getCenter(), {
draggable: true
});
var popupHTML = '<form>.........'+
'<input type="button" id="marker-submit" class="btn '+
'btn-primary btn-block" onClick="testMarker(\'new\');" '+
'value="Add to Map" />';
markers['new'].bindPopup(popupHTML).addTo(map);
function testMarker (id) {
console.log(markers[id]);
}