cesium获取点击点的经纬度

cesium获取点击点的经纬度,第1张

首先,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中如何获取鼠标点击时的坐标、想知道: 百度地图上某个点的坐标怎么获取到谢谢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9504781.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存