Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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_Leaflet_Leaflet.draw - Fatal编程技术网

Javascript 单张的坐标。绘制矩形

Javascript 单张的坐标。绘制矩形,javascript,leaflet,leaflet.draw,Javascript,Leaflet,Leaflet.draw,是否可以在鼠标单击上获取矩形的坐标,这样我就拥有了矩形的所有角?请参见事件对象(): 使用e.target.getLatLngs()使用标准 传单的矩形延伸。多边形延伸 因此,为了获得传单.draw矩形的坐标,可以使用Polyline的方法getLatLngs(),该方法返回路径中的点数组 示例: var drawnItems = new L.FeatureGroup(); map.addLayer(drawnItems); map.on('draw:created', function (e

是否可以在鼠标单击上获取矩形的坐标,这样我就拥有了矩形的所有角?

请参见事件对象():

使用
e.target.getLatLngs()

使用标准

传单的矩形延伸。多边形延伸

因此,为了获得传单.draw矩形的坐标,可以使用Polyline的方法
getLatLngs()
,该方法返回路径中的点数组

示例:

var drawnItems = new L.FeatureGroup();
map.addLayer(drawnItems);

map.on('draw:created', function (e) {

    var type = e.layerType,
        layer = e.layer;

    if (type === 'rectangle') {
        layer.on('mouseover', function() {
            alert(layer.getLatLngs());    
        });
    }

    drawnItems.addLayer(layer);
});

应该注意的是,e.layerType包含正在创建的形状类型
getLatLngs和getLatLngs等方法是特定于shapetype的

根据typescript定义文件,这些是层中允许的不同类型

Circle | CircleMarker | Marker | Polygon | Polyline | Rectangle;
e.layerType的可能值为(根据typescript定义文件)

因此,始终可以使用e.layer.toGeoJSON().geometry.coordinates获取坐标
但是您需要在e.layerType-s之间切换,因为圆geojson不包含半径,所以需要使用getRadius获取它。
进一步注意,getLatLngs返回UN闭合多边形的LatLng-数组,而toGeoJSON().geometry.coordinates返回坐标为LngLat-array的闭合多边形

// console.log((<any>e.layer).getLatLngs()); // polyline
// console.log((<any>e.layer).getLatLng()); // circle
// mind the s at the end of the function...


map.on('draw:created', function(e:L.DrawEvents.Created) 
{
    console.log('On draw:created', e.target);
    console.log(e.type, e);


    console.log(e.layerType);
    // console.log((<any>e.layer).getLatLngs()); // polyline
    // console.log((<any>e.layer).getLatLng()); // circle

    // e.layerType // polygon, circle, etc. 

    // polygon 
    // e.layer.getLatLngs()

    // circle
    // e.layer.getLatLng()
    // e.layer.getRadius()


    // e.layer.toGeoJSON().geometry.type // is point if circle 
    // e.layer.toGeoJSON().geometry.coordinates

    let type = e.layerType,
        layer = e.layer;
    drawnItems.addLayer(layer);
});
//console.log((e.layer.getLatLngs());//多段线
//console.log((e.layer.getLatLng());//圆圈
//注意函数末尾的s。。。
map.on('draw:created',函数(e:L.drawervents.created)
{
console.log('On draw:created',e.target);
控制台日志(e.type,e);
console.log(例如layerType);
//console.log((e.layer.getLatLngs());//多段线
//console.log((e.layer.getLatLng());//圈
//图层类型//多边形、圆等。
//多边形
//e.layer.getLatLngs()
//圈
//e.layer.getLatLng()
//e.layer.getRadius()
//e.layer.toGeoJSON().geometry.type//是圆中的点
//e.layer.toGeoJSON().geometry.coordinates
让type=e.layerType,
层=e层;
drawnItems.addLayer(层);
});

您知道为什么layer.toGeoJSON().geometry.coordinates会添加另一个坐标。@Spir:layer.getLatLngs()会返回一个未闭合多边形的LatLng数组。layer.toGeoJSON().geometry.coordinates将返回闭合多边形的LngLat数组。(最后一个点是第一个点)此外,如果形状是圆,layer.getLatLngs()将不可用。一个圆将有layer.getLatLng(),但ToGeoJSON().geometry.coordinates始终存在。请显示边界语义,我的输入是
{ne:{lat:-23.5601806640625lon:-46.64794921875},sw:{lat:-23.565673828125,lon:-46.658935546875}
。谢谢。几年后,这对我有所帮助:)当我尝试一些
mapBounds.extend()
时,这是一个很好的小片段。只需为每一组新的边界绘制一个不同的框&看看这个框如何适合地图。谢谢,+1
Circle | CircleMarker | Marker | Polygon | Polyline | Rectangle;
circle, marker, polygon, polyline, rectangle
// console.log((<any>e.layer).getLatLngs()); // polyline
// console.log((<any>e.layer).getLatLng()); // circle
// mind the s at the end of the function...


map.on('draw:created', function(e:L.DrawEvents.Created) 
{
    console.log('On draw:created', e.target);
    console.log(e.type, e);


    console.log(e.layerType);
    // console.log((<any>e.layer).getLatLngs()); // polyline
    // console.log((<any>e.layer).getLatLng()); // circle

    // e.layerType // polygon, circle, etc. 

    // polygon 
    // e.layer.getLatLngs()

    // circle
    // e.layer.getLatLng()
    // e.layer.getRadius()


    // e.layer.toGeoJSON().geometry.type // is point if circle 
    // e.layer.toGeoJSON().geometry.coordinates

    let type = e.layerType,
        layer = e.layer;
    drawnItems.addLayer(layer);
});