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删除掉。
一:在地图中添加对象选中监听器,即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删除掉。
相关文章推荐
- 机房重构——视图
- MP4v2获得h264数据
- 在eclipse中查看sources源码和JavaDoc帮助文档
- 使用用例覆盖需求和指导代码实现
- App打包上架流程(iOS转)
- awk-学习
- mysql中优化sql语句查询的30种方法
- 模板
- 中国新战机抄袭F-35?美空军靠仿制掠夺起家
- CentOS 编译安装 nginx php mysql
- Mysql host '192.168.1.1' is not allowed to connect to this mysql server
- Nginx服务器基础的安全配置与一些安全使用提示
- Maven
- FloatingActionMenu 向上弹出菜单
- 浏览器、apache的连接超时详解
- Linux性能测试工具
- 记录-Hibernate+servlet实现简单的增、删、查、改
- MacOS xampp配置环境执行composer命令出现 error:14090086 的解决方案
- 触屏touch事件记录
- java.lang.UnsatisfiedLinkError: D:\Tomcat-7.0.59\apache-tomcat-7.0.59\bin\tcnative-1.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform