首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >告诉leaflet.draw geojson面是一个矩形

告诉leaflet.draw geojson面是一个矩形
EN

Stack Overflow用户
提问于 2013-11-14 19:06:47
回答 1查看 1.9K关注 0票数 5

我使用的是leaflet.draw,当创建一个矩形时,我使用layer.toGeoJSON()获取矩形的数据,然后使用ajax将其保存到数据库中。

在此之后,当用户再次显示地图时,我将加载以前保存的数据,并使用L.GeoJSON.geometryToLayer()将它们推入为leaflet.draw保留的featureGroup中

问题是我之前创建的矩形现在是leaflet.draw的一个真正的多边形。

"Rectangle“在geoJson规范中是不存在的,所以我可以理解。

现在,在geojson的“属性”中,我知道之前的形状是一个矩形,带有"type“属性。

我的问题是:从leaflet.draw的角度看,有没有一种方法可以将形状强制为矩形?

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2015-02-04 04:57:24

我遇到了同样的问题,并想出了一个对我有效的解决方案,尽管这不是最优雅的方法。

使用leaflet.draw,我收到一个新的层,在上面调用layer.toGeoJSON()将矩形保存到我的数据库中。在刷新页面时,我将从数据库中拉回GeoJSON表示,并将其存储为:

代码语言:javascript
复制
var geojson = JSON.parse(geojson_string);

我首先尝试的是从这些点构建我自己的Rectangle并将其添加到drawnItems中。

代码语言:javascript
复制
var bounds = L.latLngBounds(geojson.geometry.coordinates);
var rect = L.rectangle(bounds);
drawnItems.addLayer(rect);

这段代码没有抛出错误,但它也没有在地图上显示矩形。在进一步研究之后,我发现从layer.toGeoJSON()输出的坐标对和L.latLngBounds()所需的坐标对颠倒了(一个是lng,另一个是lng,lat ),这导致创建矩形的位置完全错误。为了解决这个问题,我首先构造了一个GeoJSON层,这会产生一个多边形,然后使用该表示的边界来构造我的矩形。

代码语言:javascript
复制
var geojson_layer  = L.GeoJSON.geometryToLayer(geojson);
var rect = L.rectangle(geojson_layer.getBounds());
drawnItems.addLayer(rect);

这将成功创建一个矩形,leaflet.draw可以识别该矩形,并允许编辑工具正常工作。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19976063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档