您的位置:首页 > 其它

SuperMap超图——点位标注和callout

2016-01-27 10:41 169 查看
在操作地图的时候,我们都需要点击某个点,显示该点的信息,点击信息显示详细。在超图中实现这个目标,我现在理解有两种方法。

一:在地图中添加对象选中监听器,即mMapControl.addGeometrySelectedListener(this);并添加选中动作,即mMapControl.setAction(Action.SELECT);

当在地图中添加了对象选中监听器后,添加对象被选中时的监听。

//对象选中监听事件

@Override

public void geometrySelected(GeometrySelectedEvent arg0) {

mMapView.removeAllCallOut();

curID = -1;

curID = arg0.getGeometryID();

Layer layer = arg0.getLayer();

if(layer!=null && layer.getSelection().getCount() > 0){//判断图层是否为空,且选择了对象

Recordset recordset = layer.getSelection().toRecordset();

recordset.moveFirst();

Geometry geoMetry = recordset.getGeometry();

if(geoMetry.getType()==GeometryType.GEOPOINT){//判断是否选择了点

GeoPoint geopoint = (GeoPoint) recordset.getGeometry();

if(recordset.getFieldInfos().get("PointName")!=null){//判断该选择集是否含有PointName的字段

String pointName = recordset.getFieldValue("PointName").toString();

if(iscallout){

addCallOut(geopoint, pointName);//显示标注

}else{

mMapView.removeAllCallOut();

}

}

}

}

}

添加callout

//添加定位标注

private void addCallOutBall(final Point2D point2D,int index,final PointUtil point) {

CallOut callout = new CallOut(TabMainActivity.tabMain);

callout.setStyle(CalloutAlignment.CENTER);

callout.setCustomize(true);

callout.setLocation(point2D.getX(), point2D.getY());

ImageView image = new ImageView(TabMainActivity.tabMain);

if(index==0){

image.setBackgroundResource(R.drawable.start_trans);

}else if(index==1){

image.setBackgroundResource(R.drawable.redball);

}else if(index==2){

image.setBackgroundResource(R.drawable.end_trans);

}

callout.setContentView(image);

//callout的点击事件

callout.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

GeoPoint geopoint = new GeoPoint();

geopoint.setX(point2D.getX());

geopoint.setY(point2D.getY());

addCallOut(geopoint, point.getName());

}

});

//添加带name属性的callout

mMapView.addCallout(callout);

}

二:通过点击callout重新生成一个callout,并将原来的callout删除掉。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: