Google maps api 3 谷歌地图扩展了矩形边界的限制
请查找google mapsApi文档 请缩放到“世界视图”,然后尝试向右扩展区域选择。在某些时候,你可以观察到选择变得不稳定,它选择了世界上完全不同的部分 默认情况下,矩形选择工具似乎在寻找完成形状的最短路径。当试图绘制一个非常大的区域时,这会创建一个奇怪的行为Google maps api 3 谷歌地图扩展了矩形边界的限制,google-maps-api-3,Google Maps Api 3,请查找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});