![](/img/trans.png)
[英]How to get the user's location from iPhone using Google Maps API v3?
[英]How to get user's shape from Google Maps JavaScript API V3 and analyze it
在我當前正在工作的項目上,我要求用戶在地圖上搜索位置。 當用戶找到位置時,他/她需要在需要其信息的區域上繪制一個矩形。 例如,如何獲取在地圖上繪制的shape(rectangle)
as object
,因此可以使用getNorthEast()
, getSouthWest()
並獲取對象的正確坐標?
我一直在嘗試的是:
google.maps.event.addListener(drawingManager, 'dragend', function(e) { if (e.type == google.maps.drawing.OverlayType.RECTANGLE) { // Send bounds. var rectangleShape = e.overlay; rectangleShape.type = e.type; // var coordinate = rectangleShape.getNorthEast(); -- Won't allow me to use it. // var coordinate = rectangleShape.getBounds().getNorthEast(); -- Won't allow me to use it too. } });
但是,正如我在代碼中所寫的那樣,它不允許我使用那些方法,這意味着我做錯了什么。 有什么想法/代碼可以與我分享以解決此問題嗎?
編輯:里面的drawingManager
var drawingManager = new google.maps.drawing.DrawingManager({ drawingMode: google.maps.drawing.OverlayType.RECTANGLE, drawingControl: true, drawingControlOptions: { position: google.maps.ControlPosition.TOP_CENTER, drawingModes: [ google.maps.drawing.OverlayType.RECTANGLE ] }, rectangleOptions: { editable:true, draggable:true, geodesic:true } });
編輯2:在@MrUpsidown
答案中,我問他如何在地圖上移動矩形或調整大小后如何捕獲矩形上的bounds_changed
事件。
因此,如果有人需要實現此目標,則這是答案:
google.maps.event.addListener(drawingManager, 'rectanglecomplete', function(event) { google.maps.event.addListener(event, 'bounds_changed', function(){ if (event.type == google.maps.drawing.OverlayType.RECTANGLE) { var bounds = event.getBounds(); // Here are the new bounds after moving the rectangle around or resizing it. // Rest of the code here. } });
檢查@MrUpsidown
的已編輯帖子, @MrUpsidown
了解另一種解決方法。
問候,德揚
如果要覆蓋的范圍,請執行以下操作:
google.maps.event.addListener(drawingManager, 'overlaycomplete', function(event) {
var bounds = event.overlay.getBounds();
});
然后可以使用bounds.getNorthEast();
等等
編輯:回答您的第二個問題:聽更多事件的一種簡單方法是將覆蓋圖繪制成google.maps.Rectangle后:
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
});
var ne = rectangle.getBounds().getNorthEast();
var sw = rectangle.getBounds().getSouthWest();
您可以使用.lat()和.lng()獲得緯度和經度,如下所示:
var contentString = '<b>Rectangle moved.</b><br>' +
'New north-east corner: ' + ne.lat() + ', ' + ne.lng() + '<br>' +
'New south-west corner: ' + sw.lat() + ', ' + sw.lng();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.