为什么当我在地图中编辑MultiPolygon类型几何体时,它会更改为多边形类型?

时间:2017-01-02 23:12:35

标签: javascript django google-maps polygon geojson

我正在使用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。 感谢您给我的任何支持。

0 个答案:

没有答案