SuperMap超图——点位标注和callout

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

一:在地图中添加对象选中监听器,即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删除掉。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值