我用Yii框架与GeoExt开发基于地图的网络application.In这个程序,我有一个功能,用户可以绘制多边形,当点击它,我送与阿贾克斯到控制器动作多边形信息以节省database.For节约多边形这个多边形上的数据库,我需要polygon.For的坐标获得多边形的坐标我在控制器使用下面的代码action.But我不知道我能得到的多边形坐标或不为理解这件事我送坐标到我的行动代码$ .ajax成功功能,但我在我的浏览器控制台中出现错误!
操作代码:获取多边形从GeoJSON的坐标Yii框架
public function actionTest()
{
if(isset($_POST['polygon']) && isset($_POST['name'])){
$str = $_POST['polygon'];
$polygon = CJSON::decode($str);
$coordinates = $polygon->polygon->geometry->coordinates[0];
}
echo CJSON::encode(array('polygon'=> $coordinates));
}
$阿贾克斯代码:
POST http://localhost/FleetManagement/index.php/site/test 500 (PHP Error) jquery.js:8102 jQuery.ajaxTransport.send jquery.js:8102 jQuery.extend.ajax jquery.js:7580 modify.mode/FleetManagement/:254(anonymous function)
但是当我使用下面的代码的行动我可以:
function save(feature) {
var geojson_format = new OpenLayers.Format.GeoJSON();
var str = geojson_format.write(feature);
str = str.replace(/,/g, ', ');
Ext.MessageBox.prompt('Name', 'Please enter district name:', function(btn, text){
if (btn == 'ok' && text.length > 0){
<?php
echo CHtml::ajax(array(
'url'=>array('site/test'),
'data'=>array('polygon'=>'js:str',
'name'=>'js:text'),
'type'=>'POST',
'success'=>"function(data){
console.log(data);
}"
));
?>
$("#output").val(str);
}
else if(btn == 'ok' && text.length == 0)
Ext.MessageBox.alert('Error', 'Please Enter Name For Polygon To Save');
});
}
在浏览器控制台错误在控制台中获得字符串:
public function actionTest()
{
if(isset($_POST['polygon']) && isset($_POST['name'])){
$str = $_POST['polygon'];
$polygon = CJSON::decode($str);
}
echo CJSON::encode(array('polygon'=> $polygon));
}
使用上面的代码后,我可以得到以下字符串中的浏览器控制台:
{"polygon":{"type":"Feature","properties":[],"geometry":{"type":"Polygon","coordinates":[[[-7302732.4720101,6527844.6333235],[-3193477.8319711,6606116.1502766],[-5111129.9973226,5001550.0527375],[-6637424.5779086,4884142.7773079],[-7772361.5737289,5158093.0866438],[-7302732.4720101,6527844.6333235]]]},"crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:OGC:1.3:CRS84"}}}}
,为什么我不能得到的坐标,我怎么能做到这一点?
我看到下面的代码在Chrome控制台的var_dump输出!
<pre class='xdebug-var-dump' dir='ltr'>
<b>array</b>
'type' <font color='#888a85'>=></font> <small>string</small> <font color='#cc0000'>'Feature'</font> <i>(length=7)</i>
'properties' <font color='#888a85'>=></font>
<b>array</b>
<i><font color='#888a85'>empty</font></i>
'geometry' <font color='#888a85'>=></font>
<b>array</b>
'type' <font color='#888a85'>=></font> <small>string</small> <font color='#cc0000'>'Polygon'</font> <i>(length=7)</i>
'coordinates' <font color='#888a85'>=></font>
<b>array</b>
0 <font color='#888a85'>=></font>
<b>array</b>
...
'crs' <font color='#888a85'>=></font>
<b>array</b>
'type' <font color='#888a85'>=></font> <small>string</small> <font color='#cc0000'>'name'</font> <i>(length=4)</i>
'properties' <font color='#888a85'>=></font>
<b>array</b>
我不知道为什么坐标不出现在控制台显示...代替主题!
我想测试我可以得到在浏览器控制台多边形的坐标,并测试其保存多边形数据库之后。 – user1344766 2012-08-01 16:30:43