首页 / 浏览问题 / 云GIS / 问题详情
leaflet中map.getBounds()获取的值是一样的
68EXP 2020年07月28日

leaflet中map.getBounds()获取的值是一样的,这是为什么

1个回答

您好,如果您想获取地图范围,可以直接发get请求到地图服务.rjson 其中有地图bounds表述

3,357EXP 2020年07月29日
我是想获得当前视窗下的地图范围,也可以这么用吗
getBounds() LatLngBounds

返回当前地图视图中可见的地理范围

我用getBounds返回的northEast和southWest的值是一样的
你放大地图,再调用这个方法,看下是不是还是返回同样的结果,然后说下你的地图坐标系
还是返回一样的结果,坐标系是EPSG4326
var host = window.isLocal ? window.server : "https://iserver.supermap.io";
    var map, url = host + "/iserver/services/map-world/rest/maps/World";
    map = L.map('map', {
        crs: L.CRS.EPSG4326,
        center: [0, 0],
        maxZoom: 18,
        zoom: 1
    });
    L.supermap.tiledMapLayer(url).addTo(map);
   map.on('moveend',e=>{
      console.log(map.getBounds())
   })  放大缩小地图再看下 我测试没有问题
map = L.map('mapContainer', {
                            crs: L.CRS.EPSG4326,
                            center: [0,0],
                            maxZoom: 18,
                            zoom: 1
                        });
                        var layer = L.supermap.tiledMapLayer(url);
                        layer.addTo(map);
                        L.control.scale().addTo(map);
                        map.invalidateSize(true);
                        var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
                        $("#mapPan").click(function() { //添加地图监听事件
                            map.on({
                                "moveend": MaptoScene
                            });

 handler.removeInputAction(Cesium.ScreenSpaceEventType.MOUSE_MOVE);
                            handler.removeInputAction(Cesium.ScreenSpaceEventType.WHEEL);

 });
function MaptoScene() {
                            console.log(map.getBounds());}

我是这么写的,之前我的地图加载的时候也有问题,就是不能充满整个div是不是这个影响的,我把整个地图拖拽出来获得的边界值也还是两个一样的值。

把这个div的position为absolute。然后谷歌调试dom看获取到这个地图的cavase是不是占满整个div

我设置的就是绝对的,您看一下我这个地图我在dom选中之后是这样的,我应该怎么改呢

你这个div感觉就是有点问题,您可以把这个div丢出外部,使其相对于你这个地图的位置为绝对。可以理解为直接把这个div绝对位置上至于下层底图之上,而不是又嵌于底图之内。
#mapContainer {
                position: absolute;
                left: 20px;
                bottom: 110px;
                width: 350px;
                height: 200px;
                margin: 0;
                padding: 0;
                overflow: hidden;
                /*background-color: rgba(5, 24, 30, .7);*/
                background-color: white;
                border: rgba(89, 191, 195, .7) 1px solid;
            }

<div id="mapContainer" v-show="mapFlag">
                    <div id="mapContainer1" style="width: 100%;height: 100%;"></div>
                </div>

我改成这样了,但是也是不好用
把地图装载到mapContainer看看效果
我试了装载到mapContainer里不行的,放在mapcontainer1里也还是不行
...