首先,Cesium 中的坐标可分为两种情况:二维和三维,三维又有地形和模型之分;
1、二维坐标,获取椭球体表面的经纬度坐标:
var handler = new CesiumScreenSpaceEventHandler(scenecanvas);
handlersetInputAction(function(evt) {
var cartesian=viewercamerapickEllipsoid(evtposition,viewersceneglobeellipsoid);
var cartographic=CesiumCartographicfromCartesian(cartesian);
var lng=CesiumMathtoDegrees(cartographiclongitude);//经度值
var lat=CesiumMathtoDegrees(cartographiclatitude);//纬度值
var mapPosition={x:lng,y:lat,z:cartographicheight};//cartographicheight的值始终为零。
}, CesiumScreenSpaceEventTypeLEFT_CLICK);
2、三维坐标,获取地形表面的经纬度高程坐标:
方法一
var handler = new CesiumScreenSpaceEventHandler(scenecanvas);
handlersetInputAction(function(evt) {
var ray=viewercameragetPickRay(evtposition);
var cartesian=viewersceneglobepick(ray,viewerscene);
var cartographic=CesiumCartographicfromCartesian(cartesian);
var lng=CesiumMathtoDegrees(cartographiclongitude);//经度值
var lat=CesiumMathtoDegrees(cartographiclatitude);//纬度值
var mapPosition={x:lng,y:lat,z:cartographicheight};//cartographicheight的值为地形高度。
}, CesiumScreenSpaceEventTypeLEFT_CLICK);
方法二
var handler = new CesiumScreenSpaceEventHandler(scenecanvas);
handlersetInputAction(function(evt) {
var ray=viewercameragetPickRay(evtposition);
var cartesian=viewersceneglobepick(ray,viewerscene);
var cartographic=CesiumCartographicfromCartesian(cartesian);
var lng=CesiumMathtoDegrees(cartographiclongitude);//经度值
var lat=CesiumMathtoDegrees(cartographiclatitude);//纬度值
//height结果与cartographicheight相差无几,注意:cartographicheight可以为0,也就是说,可以根据经纬度计算出高程。
var height=viewersceneglobegetHeight(cartographic);
var mapPosition={x:lng,y:lat,z:heightheight};//height的值为地形高度。
}, CesiumScreenSpaceEventTypeLEFT_CLICK);
3、三维坐标,获取模型表面的经纬度高程坐标(此方法借鉴于官方示例):
var handler = new CesiumScreenSpaceEventHandler(scenecanvas);
handlersetInputAction(function(evt) {
var scene = viewerscene;
if (scenemode !== CesiumSceneModeMORPHING) {
var pickedObject = scenepick(evtposition);
if (scenepickPositionSupported && Cesiumdefined(pickedObject) && pickedObjectnode) {
var cartesian = viewerscenepickPosition(evtposition);
if (Cesiumdefined(cartesian)) {
var cartographic = CesiumCartographicfromCartesian(cartesian);
var lng = CesiumMathtoDegrees(cartographiclongitude);
var lat = CesiumMathtoDegrees(cartographiclatitude);
var height = cartographicheight;//模型高度
mapPosition={x:lng,y:lat,z:height}
}
}
}
}, CesiumScreenSpaceEventTypeLEFT_CLICK);
CPoint
pt;
::GetCursorPos(&pt);
这样就可以得到当前鼠标的位置了,(ptx,pty)。
要获得鼠标点击时的坐标不用自己获得的,MFC的消息映射函数的参数中有鼠标位置的这个参数的。
官方获取办法
1、搜索“百度地图api”
2、 第一条结果点击进入,这是一个开发者用的网站,里面集成了各种有用的工具,找到菜单开发-工具支持-坐标拾取器
3、鼠标放上去,可以获取坐标
以上就是关于cesium获取点击点的经纬度全部的内容,包括:cesium获取点击点的经纬度、vc中如何获取鼠标点击时的坐标、想知道: 百度地图上某个点的坐标怎么获取到谢谢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)