1、3DGIS模型加載地址http://api.ztmapinfo.com/obj/yangjing/test.FBX
2、建筑點(diǎn)擊事件監(jiān)聽
obj.on("click",function(e,position,xy,point){
if(drawPoly3DMode) return;//如果是繪制區(qū)域模式,則禁止此功能
sandplugin.modelRange(e,{color:"#00ff00"});
//此處可拿到建筑的名稱、坐標(biāo)、高度
var lngLat = position.lngLat;
var height = point.z;
var meshname = e.name;
});
3、根據(jù)名稱獲取建筑
var building = sandplugin.getObject("b05");
sandplugin.modelRange(building,{color:"#00ff00"});
4、繪制區(qū)域
var allPoints=[]; //存放繪制范圍區(qū)域的所有坐標(biāo)
var endPoint=null; //首尾相連的坐標(biāo),及最后一個(gè)坐標(biāo)
var areaId=null; //區(qū)域的編號
var allDatas={}; //存放所有繪制的范圍區(qū)域數(shù)據(jù)
function initToolEvent(){
drawPoly3DMode = true;
map.on("click",mapClick);
map.on("mousemove",mapMoveEvent);
map.on("dblclick",mapdblClick);
}
function mapClick(event){ //地圖單擊事件,開始繪制區(qū)域
if(endPoint==null)endPoint=[event.lngLat.lng,event.lngLat.lat];
if(areaId==null)areaId="area_"+Date.now();
allPoints.push([event.lngLat.lng,event.lngLat.lat]);
}
function mapMoveEvent(event){ //地圖移動(dòng)事件
if(endPoint==null) return;
var points=[].concat(allPoints);
points.push([event.lngLat.lng,event.lngLat.lat]);
points.push(endPoint);
drawPoly3D(areaId,points); //繪制范圍
}
function mapdblClick(event){ //地圖雙擊事件,結(jié)束繪制區(qū)域
if(endPoint==null) return;
drawPoly3DMode = false;
map.off("click",mapClick); //移除事件
map.off("mousemove",mapMoveEvent);
map.off("dblclick",mapdblClick);
allPoints.splice(allPoints.length-1,1);
allPoints.push(endPoint);
drawPoly3D(areaId,allPoints);
//存放所有的區(qū)域數(shù)據(jù)(data:位置坐標(biāo)數(shù)組;height:區(qū)域高度;center:區(qū)域中心點(diǎn))
allDatas[areaId]={data:allPoints,height:1,center:getAreaCenter(allPoints)};
allPoints=[]; //清除數(shù)據(jù)
areaId=null;
endPoint=null;
}
function drawPoly3D(id,datas){
var mesh=sandplugin.ztMesh.creatPoly3D(datas,{id:id,height:2,isTop:true,opacity:0.6,color:"#00ff00"});
sandplugin.remove(id);
sandplugin.add(mesh);
}
我要評論