Javascript 为什么在地图中编辑多多边形类型的几何体时,它会更改为多边形类型?
我正在使用GeoDjango和谷歌地图api 3绘图。 当我启用“可编辑:True”并编辑多多边形类型的几何体时,它会在GeoJson属性中更改为多边形类型,但我需要在多多边形中处理所有几何体 我在网上搜索,但我找到的都是“如何将多边形变为多边形”,但我不想这样 这是我在django的模特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
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来使用。
谢谢你对我的支持。你不必是,一个多面体,里面有一个多边形,那就是多边形!!是的,但我正在处理多多边形,如果系统更改我的集合类型,我会有一些错误,因为我的代码面向处理多多边形而不是多边形,如果您看到它们有一些差异,例如:多边形:[“多边形”]];虽然多面体:[[[“多边形”]]]我不认为这会成为一个问题