Google maps api 3 谷歌地图扩展了矩形边界的限制

Google maps api 3 谷歌地图扩展了矩形边界的限制,google-maps-api-3,Google Maps Api 3,请查找google mapsApi文档 请缩放到“世界视图”,然后尝试向右扩展区域选择。在某些时候,你可以观察到选择变得不稳定,它选择了世界上完全不同的部分 默认情况下,矩形选择工具似乎在寻找完成形状的最短路径。当试图绘制一个非常大的区域时,这会创建一个奇怪的行为 我想点击并拖动一个很大的区域,它覆盖了一个很大的地理区域。我从西往东拖。一旦物体的大小非常大,选择就会保留下来,并且覆盖了世界上完全不同的部分 我试图扩大一个边界,把整个世界都包括在内。当边界足够远时,该区域再次显示为最小/较小的区域

请查找google mapsApi文档 请缩放到“世界视图”,然后尝试向右扩展区域选择。在某些时候,你可以观察到选择变得不稳定,它选择了世界上完全不同的部分

默认情况下,矩形选择工具似乎在寻找完成形状的最短路径。当试图绘制一个非常大的区域时,这会创建一个奇怪的行为

  • 我想点击并拖动一个很大的区域,它覆盖了一个很大的地理区域。我从西往东拖。一旦物体的大小非常大,选择就会保留下来,并且覆盖了世界上完全不同的部分

  • 我试图扩大一个边界,把整个世界都包括在内。当边界足够远时,该区域再次显示为最小/较小的区域

  • 预期的行为是选择器继续按照用户想要的方向扩展。在这种情况下,我希望选择器继续其从西向东的扩展

    是否有解决上述情况的解决方案


    如果需要进一步的详细信息,请告诉我。

    正如我在评论中所说的,当您将其拖得“太远”时,矩形的左右坐标(经度)会反转

    换句话说,如果您将其向右拖得太远,右侧将变为左侧,左侧将是您将右侧拖到的位置。相反的方向。因此,通过比较左与右之间的位置,或者反之亦然,你可以检测出你的矩形左与右是否反转,然后再反转一次。。。这样你就可以实现你想要的

    当然,如果你把右边拖动到比左边更右边的位置(或者相反),它会重置,因为你不能让一个矩形在地球上重叠

    不过,UI可能有点混乱,因为您可以看到矩形线被反转,但您对此无能为力

    var映射;
    函数初始化(){
    变量映射选项={
    中心:新google.maps.LatLng(0,0),
    缩放:2,
    动物控制:错误
    };
    map=new google.maps.map(document.getElementById('map-canvas'),mapOptions);
    //设置原点边界
    var originBounds=new google.maps.LatLngBounds(
    新的google.maps.LatLng(-20,-100),
    新google.maps.LatLng(20,20)
    );
    //获得左/右坐标
    var left=originBounds.getSouthWest().lng();
    var right=originBounds.getNorthEast().lng();
    //创建可编辑矩形
    var rectangle=new google.maps.rectangle({
    边界:原始边界,
    fillColor:'白色',
    不透明度:.5,
    是的,
    地图:地图
    });
    //检查矩形边界是否已更改
    google.maps.event.addListener(矩形,'bounds_changed',function(){
    //获取当前边界和左/右坐标
    var newBounds=rectangle.getBounds();
    var newLeft=newBounds.getsoutwest().lng();
    var newRight=newBounds.getNorthEast().lng();
    if((newRight==left)| |(newLeft==right)){
    //用户向左或向右拖动“太远”,矩形反转
    //反转左右坐标
    矩形.setBounds(反向边界(新边界));
    }
    //左右复位电流
    左=矩形.getBounds().getSouthWest().lng();
    右=矩形.getBounds().getNorthEast().lng();
    });
    }
    函数界(界){
    //反转矩形边界
    var invertedBounds=新的google.maps.LatLngBounds(
    新的google.maps.LatLng(bounds.getNorthEast().lat(),bounds.getNorthEast().lng()),
    新的google.maps.LatLng(bounds.getsoutwest().lat(),bounds.getsoutwest().lng())
    );
    返回反向边界;
    }
    初始化()
    
    #地图画布{
    高度:150像素;
    }
    
    
    您的问题太宽泛、不清楚,我们不知道您尝试了什么以及在哪里/如何失败,因为您没有发布任何代码。请提供一个演示您试图实现的目标和面临的问题的文档。@MrUpsidown请查找google mapsApi文档。请尝试缩放到“世界视图”,然后在一次尝试中将区域选择扩展到单词。在某些时候,你可以观察到选择变得不稳定,它选择了世界上完全不同的部分。它向相反的方向扩展,而不是世界上完全不同的部分。这是合乎逻辑的。。。它将使用从形状的一侧到另一侧的最短路径,环绕全球。别忘了它是一个球体的表示…谢谢,如果我们多次尝试选择区域,我们仍然可以选择整个区域。在我的要求中,我需要在一次尝试中选择整个区域,这看起来是不可能的。
    var bounds = {north: 44.599, south: 44.490, east: -78.443, west: -78.649 }; // Define a rectangle and set its editable property to true. var rectangle = new google.maps.Rectangle({bounds: bounds, editable: true});