0

我正在使用传单 api,用户可以在地图上放置标记。我制作了一个用于放置标记的自定义按钮。

我愿意在这些标记之间画线,即使用 L.polylines(),但由于我是 javascript 和传单的新手,我不明白如何将这些 latlng 点传递给稍后将在这些函数中使用的数组。对于初始工作,我已经通过了静态坐标(作为 req 工作)。

L.easyButton('fa-link', function () {

var secureThisArea = [[-81, 100.75], [-76.50, 245.75], [-145.50, 184.25], [-128, 311.75]];

    map.on('click', function fencePlace(e) {

    L.marker([-81, 100.75], { icon: fenceIcon, draggable: true }).bindPopup("this is first").addTo(map);
    L.marker([-76.50, 245.75], { icon: fenceIcon, draggable: true }).bindPopup("this is second").addTo(map);
    L.marker([-145.50, 184.25], { icon: fenceIcon, draggable: true }).bindPopup("this is third").addTo(map);
    L.marker([-128, 311.75], { icon: fenceIcon, draggable: true }).bindPopup("this is fourth").addTo(map);
    L.polyline(secureThisArea).addTo(map);

});
                }).addTo(map);
4

2 回答 2

2

向数组添加另一个值很容易,例如:

secureThisArea.push([-81, 100.75]);

您可以在Mozilla Developer Network找到更多详细信息(也与 JavaScript 相关的任何其他内容)。

如果要使用标记对象中的坐标,可以通过以下方式获取:

var myMarker = L.marker([-81, 100.75], { icon: fenceIcon, draggable: true }),
    latLng = null;

latLng = myMarker.getLatLng();

另请查看Leaflet 文档

于 2015-09-14T12:43:07.197 回答
2

如果我理解正确,您想在单击时创建标记并通过折线连接它们。这很容易做到,在带有注释的代码中进行解释:

// Create new empty polyline and add it to the map
var polyline = new L.Polyline([]).addTo(map);

// Handle map click event
map.on('click', function(event) {

    // New marker on coordinate, add it to the map
    new L.Marker(event.latlng).addTo(map);

    // Add coordinate to the polyline
    polyline.addLatLng(event.latlng);

});

现在,如果您想将所有坐标添加到折线中,您可以使用返回对象数组的getLatLngs方法。L.PolylineL.LatLng

参考: http: //leafletjs.com/reference.html#polyline

示例:http ://plnkr.co/edit/h7aMwc?p=preview

于 2015-09-14T12:50:40.450 回答