mapx提取选择区域内的实体后,再重新定位实体时,个别实体无法找到(10分)

  • 主题发起人 主题发起人 okgxsh
  • 开始时间 开始时间
O

okgxsh

Unregistered / Unconfirmed
GUEST, unregistred user!
mapx提取选择区域内的实体后,再重新定位实体时,个别实体无法找到
??什末原因呢?
 
另外如何进行模糊查询?
 
SearchWithinRectangle(rect, searchType);
有三种searchType.
searchType := miSearchTypePartiallyWithin
searchType := miSearchTypeEntirelyWithin
searchType := miSearchTypeCentroidWithin;
 
mapx提取选择区域内的实体后,再重新定位实体时,个别实体无法找到
??什末原因呢?

 
我想告诉你mapx提取选择区域内的实体有三种searchType值.不知道你是是否用了这个参数没有.不同的searchType值可以获得不同的实体,(部分包括,完全包括等)
 
//提取方法
SEARCH_RECTANGLE_TOOL :
begin

rc := CreateOleObject('MapX.Rectangle.4');
rc.Set(X1, Y1, X2, Y2);
for i := 1 to frame_map1.mapx.Layers.Countdo

begin

lyr := frame_map1.mapx.Layers.Item(i);
ftrs := lyr.SearchWithinRectangle(rc,miSearchTypeEntirelyWithin);
//MiSelectionNew
for j := 1 to ftrs.Countdo

begin

...
end;

//再次定位方法
custLayer := Mapx.Layers.Item(layer_str);
{ 查找}
stateFeature :=

Mapx.Layers.Item(layer_str).Find.Search(trim(object_str),miSearchTypeEntirelyWithin );


if stateFeature.FindRC mod 10 <> 1 then

{ 没有找到完全匹配项 }
begin

GoTo_position:=0;
exit;
end

//问题依旧是 有些实体无法找到,但是能提取出来

 
无法定位是因为地图中有大于2个地名相同的实体!如何查询定位重名的实体???
 
如何利用实体的id查询定位:像下面这样能否写点代码??
//再次定位方法
custLayer := Mapx.Layers.Item(layer_str);
{ 查找}
stateFeature :=
Mapx.Layers.Item(layer_str).Find.Search(trim(object_str),miSearchTypeEntirelyWithin );


if stateFeature.FindRC mod 10 <> 1 then

{ 没有找到完全匹配项 }
begin

GoTo_position:=0;
exit;
end
else

begin

mapx.ZoomTo(2,stateFeature.CenterX,stateFeature.CenterY);
end;
 
如何利用实体的id查询 ??

yostgxf在吗?
 
后退
顶部