zhanmingkan
2022-05-17 e8d9f2bb15b9e2a0aedafa2e7d56e741b2296f8a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
var publicpano;
//创建腾讯街景类
function streetview(){
    // 创建街景
    var pano = new qq.maps.Panorama(document.getElementById('street_map'), {
        disableMove: false,
        pano: '15091114130823143418500',                //场景ID
        pov:{
            heading:280,
            pitch:15
        },
        zoom:1,
        addressControl: true,
        disableCompass: true,
    });
    publicpano = pano;
}
//根据三维场景点击获取的坐标点移动街景位置
function moveStreetPOI(gcj02streetPoint){
    var point = new qq.maps.LatLng(gcj02streetPoint[1],gcj02streetPoint[0]);
    pano_service = new qq.maps.PanoramaService();
    pano_service.getPano(point, 200, function (result){
        if(result.svid != null){
            publicpano.setPano(result.svid);
        }else{
            swal("选择位置没有街景,请选择其它位置!","请重试!","error");
        }
    });
}
//在三维场景中点击位置,联动街景定位
var streetmap_handler;
function addStreetPointHandler(){
    streetmap_handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
    streetmap_handler.setInputAction(function(movement) {
        var pickedPosition = viewer.scene.pickPosition(movement.position);
        var pickedPositionString = pickedPosition.toString();
        //获取地理坐标(经度、纬度、高程)
        var cartographic = Cesium.Cartographic.fromCartesian(pickedPosition);
        var longitudeString = Cesium.Math.toDegrees(cartographic.longitude);
        var latitudeString = Cesium.Math.toDegrees(cartographic.latitude);
        var heightString = cartographic.height;
        //var center = pickedPosition;
        var streetPoint = wgs84togcj02(longitudeString,latitudeString);
        moveStreetPOI(streetPoint);
    }, Cesium.ScreenSpaceEventType.RIGHT_CLICK);
    streetmap_handler.setInputAction(function(movement) {
        var csmheading = Cesium.Math.toDegrees(viewer.camera.heading);
        var csmpitch = -Cesium.Math.toDegrees(viewer.camera.pitch);
        publicpano.setPov({
            heading: csmheading,
            pitch: csmpitch
        });
    }, Cesium.ScreenSpaceEventType.MIDDLE_UP);
}
function destroyStreetPointHandler(){
    streetmap_handler.destroy();
};