Closed Ejeongs2 closed 3 months ago
안녕하세요,
오브젝트 키 객체 조회를 통해 선택상태 지정 관련하여 코드 전달드립니다. 오브젝트 키는 각 레이어마다 중복될 수 있으므로, 선택 시 레이어 정보도 함께 필요합니다.
만약 이름이 "COLOR_POLYGONS"인 레이어에 키 값이 "POLYGON_2"인 오브젝트가 존재하는 경우, 아래와 같이 오브젝트를 참조하여 선택상태로 지정할 수 있습니다.
function selectObject(_layerName, _id) {
var layer = Module.getObjectLayerList().nameAtLayer(_layerName);
if (layer == null) {
return;
}
var object = layer.keyAtObject(_id);
if (object == null) {
return;
}
Module.getMap().setSelectObject(object);
Module.XDRenderData();
}
오브젝트가 real3d 건물 오브젝트인 경우, 위 코드에서 getObjectLayerList 부분을 getTileLayerList로 변경하셔서 적용하시면 됩니다.
function selectObject(_layerName, _id) {
var layer = Module.getTileLayerList().nameAtLayer(_layerName);
if (layer == null) {
return;
}
var object = layer.keyAtObject(_id);
if (object == null) {
return;
}
Module.getMap().setSelectObject(object);
Module.XDRenderData();
}
selectObject("facility_build", "B143420A");
위 코드에서는 JSMap의 setSelectObject API를 사용하여 단일 객체를 선택 상태로 지정하였습니다. 만약 여러 오브젝트를 선택하고자 하는 경우, addSelectObject API를 이어서 사용하시면 기존 오브젝트의 초기화 없이 여러 오브젝트를 선택하실 수 있습니다.
var map = Module.getMap();
var object = layer.keyAtObject("objectA");
if (object != null) {
map.addSelectObject (object);
}
object = layer.keyAtObject("objectB");
if (object != null) {
map.addSelectObject (object);
}
오브젝트 선택 상태를 초기화 하고 싶으신 경우 clearSelectObj API를 활용하시면 됩니다.
Module.getMap().clearSelectObj();
엔진 버전 : XDWorld Version : 2.3.0 문의 내용 : 객체 선택을 위해 Module.XDSetMouseState(Module.MML_SELECT_POINT)를 사용하고 있습니다. 클릭형식이 아닌 objKey값을 이용해 선택 객체가 빨강색으로 활성화되는 기능이 필요합니다.
클릭 형식이 아닌 objKey값으로 객체표시를 하는 방법이 있을까요?