Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.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_Django_Google Maps_Polygon_Geojson - Fatal编程技术网

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

Javascript 为什么在地图中编辑多多边形类型的几何体时,它会更改为多边形类型?,javascript,django,google-maps,polygon,geojson,Javascript,Django,Google Maps,Polygon,Geojson,我正在使用GeoDjango和谷歌地图api 3绘图。 当我启用“可编辑:True”并编辑多多边形类型的几何体时,它会在GeoJson属性中更改为多边形类型,但我需要在多多边形中处理所有几何体 我在网上搜索,但我找到的都是“如何将多边形变为多边形”,但我不想这样 这是我在django的模特 class Potrero(models.Model): sector = models.ForeignKey(Sector,editable=False) nombre = models.C

我正在使用GeoDjango和谷歌地图api 3绘图。 当我启用“可编辑:True”并编辑多多边形类型的几何体时,它会在GeoJson属性中更改为多边形类型,但我需要在多多边形中处理所有几何体

我在网上搜索,但我找到的都是“如何将多边形变为多边形”,但我不想这样

这是我在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中的GeoJango数据,并使用变量“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)中得到的结果:

{ “类型”:“功能”, “几何学”:{ “类型”:“多多边形”, “坐标”:[ [ [ [ -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”:“ffffff00”, “strokeColor”:“FFFF00”, “笔划不透明度”:0.8, “可编辑”:false }, “身份证”:143 }

这是正确的,因为类型仍然是“多多边形”

但是,当我改变几何体的任何垂直时,我得到的是:

{ “类型”:“功能”, “几何学”:{ “类型”:“多边形”, “坐标”:[ [ [ -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”, “笔划不透明度”:0.8, “可编辑”:false }, “身份证”:143 }

如果您现在可以看到该类型是多边形,并且它具有相同的功能

所有的代码都运行良好,除了我所问的那个之外,没有发现任何错误

同样重要的是,该错误仅出现在集合中只有一个多边形的特征中,如果我编辑集合中有多个多边形的任何特征,它将保持“类型”:“MultiPolygon”

我真的很担心这一点,因为我需要将我的所有功能都作为Multipligon来使用。
谢谢你对我的支持。

你不必是,一个多面体,里面有一个多边形,那就是多边形!!是的,但我正在处理多多边形,如果系统更改我的集合类型,我会有一些错误,因为我的代码面向处理多多边形而不是多边形,如果您看到它们有一些差异,例如:多边形:[“多边形”]];虽然多面体:[[[“多边形”]]]我不认为这会成为一个问题