我正在使用GeoDjango并使用google maps api 3进行绘图。 当我转为editable:True并编辑MultiPolygon类型几何体时,它会更改为GeoJson属性中的Polygon类型,但我需要在MultiPolygon中处理所有几何体。
我在网上搜索,但我发现的所有内容都是"如何将MultiPolygon更改为多边形",但我不想要那样。
这是我在django中的模型
class Potrero(models.Model):
sector = models.ForeignKey(Sector,editable=False)
nombre = models.CharField(max_length=30)
superficie = models.FloatField(editable=False)
vector = models.MultiPolygonField(srid=4326,default=None)
objects = models.GeoManager()
class Meta:
unique_together = (("nombre","sector"),)
def __unicode__(self):
return self.nombre
我使用geojson方法转换json中的geodjango数据,并将其与变量" lhope"中的HttpResponse一起转移。
我在javascript中的代码:
这是如何绘制功能:
map.data.addGeoJson(lhope);
map.data.setStyle(function (feature) {
var fcolor = feature.getProperty('fillColor');
var scolor = feature.getProperty('strokeColor');
var sopacity = feature.getProperty('strokeOpacity');
var edit = feature.getProperty('editable');
return {
fillColor: fcolor,
strokeColor: scolor,
strokeOpacity: sopacity,
editable:edit,
strokeWeight: 2.0
};
});
当我开始编辑时:
var f = map.data.getFeatureById(feature_id);
f.setProperty('editable',true);
当我完成版本时:
var f = map.data.getFeatureById(feature_id);
f.setProperty('editable',false);
var new_potrero;
f.toGeoJson(function(new_potrero){
alert(JSON.stringify( new_potrero,null,4));
$.get( {dataType:"json",url:"{% url 'geoinfo:get_edit_potrero' %}", data:{ idi: f.getId(), poly: JSON.stringify( new_potrero,null,4) }}) ;
});
当我转向" editable":true并且不改变几何体的任何顶点这是我从警报中获得的(JSON.stringify):
{ "输入":"功能", " geometry":{ "输入":" MultiPolygon", "坐标":[ [ [ [ -70.57841420173798, -32.759643227220906 ] [ -70.57747006416474, -32.76220103881522 ] [ -70.57895064354096, -32.76180406405501 ] [ -70.57904791831032, -32.761693993357056 ] [ -70.57907938957368, -32.76165519806363 ] [ -70.58059215545808, -32.760225169648976 ] [ -70.57841420173798, -32.759643227220906 ] ] ] ] }, "属性":{ " fillColor":"#FFFF00", " strokeColor":"#FFFF00", " strokeOpacity":0.8, "可编辑":false }, " id":143 }
它的正确性因为类型仍然是" MultiPolygon"
但是,当我改变几何体的任何顶点时,这就是我得到的:
{ "输入":"功能", " geometry":{ "输入":" Polygon", "坐标":[ [ [ -70.57841420173798, -32.759643227220906 ] [ -70.57483077049409, -32.76059734013807 ] [ -70.57747006416474, -32.76220103881522 ] [ -70.57895064354096, -32.76180406405501 ] [ -70.57904791831032, -32.761693993357056 ] [ -70.57907938957368, -32.76165519806363 ] [ -70.58262526989137, -32.7619145856149 ] [ -70.58059215545808, -32.760225169648976 ] [ -70.57841420173798, -32.759643227220906 ] ] ] }, "属性":{ " fillColor":"#00FF00", " strokeColor":"#FFFF00", " strokeOpacity":0.8, "可编辑":false }, " id":143 }
如果你现在可以看到类型是Polygon及其相同的功能。
所有代码都运行良好,没有错误,除了我要求的那个。
同样重要的是,此错误仅出现在集合中只有1个多边形的要素中,如果我编辑任何在该集合中具有多个1多边形的要素,则它会保持"类型": "的MultiPolygon"
我真的很担心这个,因为我需要将我的所有功能都用作MultiPoligon。 感谢您给我的任何支持。