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);
});