请问一下, function 包含了 function, 这是什么结构? ShowEntity和onGetEntityComplete函数有什么关联? 如果调用ShowEntity时, 下面是怎么执行的?function ShowEntity(layerName,layerType,id)
{
MapControl1.GetEntity(MapControl1.mapName,layerName,parseInt(id),onGetEntityComplete,onError); function onGetEntityComplete(entity)
{
if(entity!=null&&entity.shape!=null){
var pointsX = new Array();
var pointsY = new Array();
for(var i=0;i<entity.shape.points.length;i++){
pointsX.push(entity.shape.points[i].x);
pointsY.push(entity.shape.points[i].y);
}
if(layerType == SuperMap.IS.LayerType.line){
MapControl1.CustomLayer.RemoveMark("er");
MapControl1.CustomLayer.RemovePolygon("er");
MapControl1.CustomLayer.InsertLine("er",pointsX,pointsY,2,"red",1);
}
if(layerType == SuperMap.IS.LayerType.polygon){
MapControl1.CustomLayer.RemoveMark("er");
MapControl1.CustomLayer.RemoveLine("er");
MapControl1.CustomLayer.InsertPolygon("er", pointsX, pointsY, 2, "blue", "white", 0.6,1);
}
//清空一下
while(pointsX.length>0)
{
pointsX.pop();pointsY.pop();
}
pointsX = null;
pointsY = null;
}
}
}
{
MapControl1.GetEntity(MapControl1.mapName,layerName,parseInt(id),onGetEntityComplete,onError); function onGetEntityComplete(entity)
{
if(entity!=null&&entity.shape!=null){
var pointsX = new Array();
var pointsY = new Array();
for(var i=0;i<entity.shape.points.length;i++){
pointsX.push(entity.shape.points[i].x);
pointsY.push(entity.shape.points[i].y);
}
if(layerType == SuperMap.IS.LayerType.line){
MapControl1.CustomLayer.RemoveMark("er");
MapControl1.CustomLayer.RemovePolygon("er");
MapControl1.CustomLayer.InsertLine("er",pointsX,pointsY,2,"red",1);
}
if(layerType == SuperMap.IS.LayerType.polygon){
MapControl1.CustomLayer.RemoveMark("er");
MapControl1.CustomLayer.RemoveLine("er");
MapControl1.CustomLayer.InsertPolygon("er", pointsX, pointsY, 2, "blue", "white", 0.6,1);
}
//清空一下
while(pointsX.length>0)
{
pointsX.pop();pointsY.pop();
}
pointsX = null;
pointsY = null;
}
}
}
解决方案 »
- 求助,每点击一次Bottom按钮,添加一个表格.
- 推荐一个在FF下调试Javascript的好用工具吧
- 為甚麼這段代碼播放不了 mp3?
- 初学JS,阅读《JavaScript权威指南》有段话不理解,求翻译?
- js生成div时的样式为什么不起作用?
- 全选复选框选择问题:当下面的复选框全部被选中时,全选复选框自动被选中
- 想刷新后,控制x轴滚动条和y轴滚动条的位置都不动,请问该怎么做呢?
- 急,快帮帮我。谢谢怎样使输入框中只能输入汉字,英文字母,和数字。而不允许输入任何其他字符如(·#*%)等等
- 一个关于JavaScript中过滤字符串的问题?
- opener的使用方法!!
- 该用frame还是iframe
- 求助:pdf阅读器ie插件
onGetEntityComplete放在ShowEntity里定义的话 外面就无法使用onGetEntityComplete了
这到底跟OOP有神马关系呢?只是把一个函数作为另一个函数的参数传递而已,估计“onError”也是这样的一个东东。可以直接匿名写成:
function ShowEntity(layerName,layerType,id)
{
MapControl1.GetEntity(MapControl1.mapName, layerName, parseInt(id), function(entity){
if(entity!=null&&entity.shape!=null)......}, onError);
}
楼主的代码等价于
function ShowEntity(layerName,layerType,id)
{
var onGetEntityComplete=function(entity)
{
if(entity!=null&&entity.shape!=null){
var pointsX = new Array();
var pointsY = new Array();
for(var i=0;i<entity.shape.points.length;i++){
pointsX.push(entity.shape.points[i].x);
pointsY.push(entity.shape.points[i].y);
}
if(layerType == SuperMap.IS.LayerType.line){
MapControl1.CustomLayer.RemoveMark("er");
MapControl1.CustomLayer.RemovePolygon("er");
MapControl1.CustomLayer.InsertLine("er",pointsX,pointsY,2,"red",1);
}
if(layerType == SuperMap.IS.LayerType.polygon){
MapControl1.CustomLayer.RemoveMark("er");
MapControl1.CustomLayer.RemoveLine("er");
MapControl1.CustomLayer.InsertPolygon("er", pointsX, pointsY, 2, "blue", "white", 0.6,1);
}
//清空一下
while(pointsX.length>0)
{
pointsX.pop();pointsY.pop();
}
pointsX = null;
pointsY = null;
}
}
MapControl1.GetEntity(MapControl1.mapName,layerName,parseInt(id),onGetEntityComplete,onError);
}