Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获得用户';Google Maps JavaScript API V3中的s形状并对其进行分析_Javascript_Google Maps_Google Maps Api 3 - Fatal编程技术网

如何获得用户';Google Maps JavaScript API V3中的s形状并对其进行分析

如何获得用户';Google Maps JavaScript API V3中的s形状并对其进行分析,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,在我目前工作的项目中,我要求用户在地图上搜索一个位置。当用户找到位置时,他/她需要在需要信息的区域上绘制一个矩形。例如,如何获取地图上绘制的形状(矩形)作为对象,以便使用方法getNorthEast(),getSouthWest(),获得对象的正确坐标 我一直在尝试的是: google.maps.event.addListener(drawingManager,'dragend',函数(e){ if(e.type==google.maps.drawing.overlytype.RECTANGL

在我目前工作的项目中,我要求用户在地图上搜索一个位置。当用户找到位置时,他/她需要在需要信息的区域上绘制一个矩形。例如,如何获取地图上绘制的
形状(矩形)
作为对象,以便使用方法
getNorthEast()
getSouthWest()
,获得对象的正确坐标

我一直在尝试的是:

google.maps.event.addListener(drawingManager,'dragend',函数(e){
if(e.type==google.maps.drawing.overlytype.RECTANGLE){
//发送边界。
var矩形形状=e.叠加;
矩形形状.type=e.type;
//var coordinate=rectangleShape.getNorthEast();--不允许我使用它。
//var coordinate=rectangleShape.getBounds().getNorthEast();--不允许我也使用它。
}
});
使用.lat()和.lng()可以获得lat和long,如下所示:

var contentString = '<b>Rectangle moved.</b><br>' +
  'New north-east corner: ' + ne.lat() + ', ' + ne.lng() + '<br>' +
  'New south-west corner: ' + sw.lat() + ', ' + sw.lng();
var contentString='矩形已移动。
'+ “新东北角:”+ne.lat()+”,“+ne.lng()+”
”+ “新西南角:”+sw.lat()+”、“+sw.lng()”;
如果需要覆盖的边界,请执行以下操作:

google.maps.event.addListener(drawingManager, 'overlaycomplete', function(event) {

    var bounds = event.overlay.getBounds();
});
然后可以使用
bounds.getNorthEast()

编辑:回答您的第二个问题:收听更多事件的一个简单方法是在绘制覆盖图后将其转换为:

google.maps.event.addListener(drawingManager, 'overlaycomplete', function (event) {

    // Get shape bounds
    var bounds = event.overlay.getBounds();

    // Remove overlay from map
    event.overlay.setMap(null);

    // Create a rectangle here with the overlay bounds
});

缩放地图不是选项吗?用户可以选择缩放地图。但我想这与此无关,他们在地图上画了一个矩形。我需要那个矩形作为对象。为什么要使用google.maps.drawing.overlytype.rectangle而不是google.maps.rectangle?因为我没有创建硬编码的矩形。我给用户提供矩形覆盖,以便他们可以绘制它。
rectangle.getBounds().getNorthEast()也不起作用。我没有选择使用这些。正如我在上面所写的,矩形不是在代码中预定义的。它是由用户绘制的。请尝试将事件更改为“overlaycomplete”,也可以尝试使用e.overlay.bounds.getNorthEast()@Upsidown先生已经写了这篇文章,我已经接受了答案。谢谢你的帮助。谷歌的例子正是我所需要的。非常感谢!:)我能再问你一个问题吗?现在如何在形状上触发
bounds\u changed
事件?因为当用户将屏幕上的形状移动到新位置或调整其大小时,我需要更新边界?我添加了这样的事件:
google.maps.event.addListener(drawingManager,'bounds_changed',function(event)
,但它不会触发。没关系,解决了:)如果有人需要知道如何做,将立即更新我的帖子。再次给出完美答案。非常感谢你。我也发布了我的方法,因为它非常有效。
google.maps.event.addListener(drawingManager, 'overlaycomplete', function (event) {

    // Get shape bounds
    var bounds = event.overlay.getBounds();

    // Remove overlay from map
    event.overlay.setMap(null);

    // Create a rectangle here with the overlay bounds
});