刚开始做gis开发,太多的东东不会.
打开一个gst后有很多图层 ,用鼠标选中图中某一元素(线条等)后,如何获得该元素所在的图层名称?
Feature.table
你如果是用MapXtreme For Java
可以 给个思路
private void getMapInfo(MapJ mymap,double xpoint,double ypoint){
try {
// 取得所有的图层
Layers ls=mymap.getLayers();
ArrayList<String> infos = new ArrayList<String>();
//长方块
// DoubleRect rect = mymap
// .transformScreenToNumeric(new DoubleRect(
// new DoublePoint(xpoint - 100, ypoint - 100),
// new DoublePoint(xpoint + 100, ypoint + 100)));
//坐标点
DoublePoint point=mymap.transformScreenToNumeric(new DoublePoint(xpoint,ypoint));
for(int i=0;i<ls.size();i++){
//取的
FeatureLayer fl=(FeatureLayer)ls.get(i);
// ls.get(i).getName()
infos.add(ls.get(i).getName());
System.out.println(ls.get(i).getName());//图层名称
//取的当前图层的表的信息
TableInfo ti = fl.getTableInfo();
// 表的信息
ArrayList<String> columns = new ArrayList<String>();
for(int j=0;j<ti.getColumnCount();j++){
columns.add(ti.getColumnName(j));
}
//查询长方块的信息
// FeatureSet fs = fl.searchWithinRectangle(columns, rect,QueryParams.EMPTY_PARAMS);// 得到图元集
// 查询坐标点的信息
// fl.searchWithinRegion(arg0, Geometry, arg2)
FeatureSet fs = fl.searchAtPoint(columns, point,QueryParams.EMPTY_PARAMS);// 得到图元集
Feature f=fs.getNextFeature();
if(f!=null){
System.out.println(f.getPrimaryKey());
for(int j=0;j<f.getAttributeCount();j++){
System.out.println(columns.get(j)+"-->"+f.getAttribute(j));
}
}
System.out.println("-------------------");
fs.dispose();
}
} catch (Exception e) {
System.err.println(e.getMessage());
}
}