在OnClick中将标记作为变量传递返回[Object object]而不是Marker对象

时间:2017-04-06 00:45:13

标签: javascript jquery leaflet

单击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对象。

1 个答案:

答案 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]);
}