如何获得用户';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
});