php mapscript迁移指南¶
- 作者
艾伦布德罗
- 联系
地图齿轮网的Aboudreault
- 作者
杰夫麦克纳
- 联系
jmckenna在gatewaygeomatics.com
- 上次更新时间
2019-05-25
目录
介绍¶
本文档描述了从一个mapserver版本迁移到另一个mapserver版本(即向后不兼容)时必须对php mapscript应用程序进行的更改,以及有关某些新功能的信息。
迁移到7.4的新SWIG API和PHP 7¶
从MapServer 7.4.0版本开始,建议用户切换到MapServer的新版本 SWIG 对PHP 7+的API支持(推荐理由:正如我们所看到的,从长远来看,MapServer维护人员通过SWIG管理PHP会更容易)。一些重要的SWIG说明:
你至少需要 SWIG-3.0.11 (但建议使用4.0.0)。
如果您注意到旧的本机PHP MapScrip API中缺少任何可用函数,请首先查看 SWIG API 要使用的替代函数的参考文档,如果没有类似的可用的 file a ticket 用于您所需的每个功能。
您的所有PHP脚本(利用MapServer对象和函数)现在必须始终首先包含生成的 mapscript.php 包含MapServer常量的文件:
// required SWIG include (contains MapServer constants for PHP7) include("C:/ms4w/apps/phpmapscriptng-swig/include/mapscript.php");
注意如何声明新对象的更改:
// open map $oMap = new mapObj("C:/ms4w/apps/phpmapscriptng-swig/sample.map");
而不是以前的方式:
// open map $oMap = ms_newMapObj("C:/ms4w/apps/phpmapscript/sample.map");
迁移5.6到6.0¶
需要PHP版本¶
需要php 5.2.0或更高版本。已放弃对早期版本的支持。
错误报告¶
php mapscript现在对错误报告使用异常。所有错误都是可捕获的。没有通过标准的不可缓存PHP系统报告更多致命错误(仅警告)。
操作对象¶
可以像其他所有PHP对象一样设置对象属性。
$map->scaledenom = 25000;
备注
set/setproperty方法仍然可用。
可以使用php“new”操作符创建对象。
$myShape = ms_newShapeObj(MS_SHAPE_LINE); // or
$myShape = new shapeObj(MS_SHAPE_LINE);
备注
所有对象构造函数都在失败时引发异常。
备注
*ms_new symbolobj()*和*new symbolobj()*是不同的
ms_newsymboobj()返回新/现有符号的ID。
new symbolobj()返回symbolobj。您不需要使用getSymbolObjectByID()获取它。
可克隆对象应使用php clone关键字进行克隆。没有更多的克隆方法。
类属性¶
已删除的类属性:
Classobj:最大比例,最小比例
layerObj:LabelSizeItem、LabelAgleItem、LabelMaxScale、LabelMinScale、MaxScale、MinScale、SymbolsCale、透明度
legendobj:交错,透明
MAPOBJ:图像类型、图像质量、隔行扫描、比例、透明
scalebarobj:交错,透明
符号obj:间隙,样式长度
webobj:最小,最大
类方法¶
已移除的类方法:
图像对象:免费
图层对象:GetFilter、GetShape
自由行
免费赠送
ProjectionObj:免费
自由的:自由的
shapeobj:联合地理
符号obj:GetStyleArray
CopyObj:克隆
TyelObj:克隆
MaMbOb:克隆
outputformatobj:获取格式选项,设置格式选项
层对象¶
layerObj->clearProcessing()方法现在返回void。
MAPbOBJ¶
mapobj->querybyindex():addtoquery参数的默认行为不正常,现在是。
参考对象AppObjt¶
referencemapobj有新的属性:marker、markername、markersize、maxboxsize、minboxsize。
SuffeFielObjo¶
shapefileobj在销毁时自动关闭/写入。(在脚本末尾或使用显式free(),unset())
LabelCaseObjo¶
要释放缓存,必须调用free cache()方法,而不是free()。
现在返回ms-success/ms-failure的方法¶
layerObj:设置处理,添加功能,绘制
MAPOBJ:movelayerup、movelayerdown、zoomrectangle、zoomscale、setprojection、setwktprojection、setlayersdrawingorder
outputformatobj:验证
scalebarobj:设置图像颜色
符号obj:设置点,设置模式
现在失败时返回空值的方法¶
CopyObj:克隆
mapobj:克隆、绘制、drawquery getlayerbyname、getprojection
层obj:nextshape,getextent
TyelObj:克隆
现在返回空数组的方法¶
layerObj:获取项、获取处理、获取网格相交坐标
mapobj:getlayersindexbygroup、getallgroupname、getlayersdrawingorder、getalllayersname
符号obj:GetPatternArray