2017-07-18 58 views
-1

我有一個用戶在地圖上繪製一個多邊形。一旦他們完成多邊形,我可以得到每個點的座標在頁面上顯示。如果他們在完成後移動多邊形,座標將隨着移動而更新。有沒有一種方法可以將此分解,以顯示用戶單獨創建的所有點的經緯度,並隨運動更新?如何獲取Google Maps API v3中所有多邊形點的經度和緯度?

目前,它顯示這樣的:

座標

(37.71859032558816,-121.563720703125),(38.10862766432127,-120.1904296875),(36.77409249464195,-120.08056640625),(36.2354121683998,-117.784423828125),(35.951329861522666, -119.8828125)

我想打破它,並把它顯示是這樣的:

形狀1:

緯度:

點1:37.71859032558816

點2:38.10862766432127

點3:36.77409249464195

點4:36.2354121683998

點5:35.951329861522666

經度:

點1:-121.563720703125

點2:-120.1904296875

點3:-120.08056640625

點4:-117.784423828125

點5:-119.8828125

這裏是我目前有:

google.maps.event.addListener(drawingManager, 'overlaycomplete', function(e) 
{ 
    drawingManager.setDrawingMode(null); 
    shapes.add(e); 
    // getPath(): return value: MVCArray<LatLng> 
    // getArray(): return value: Array<LatLng> 
    var arrayOne = e.overlay.getPath().getArray(); 
    document.getElementById('coordinates').innerHTML = arrayOne; 

    // var latitude = ? 
    // var longitude = ? 

    document.getElementById('latitude').innerHTML = latitude; 
    document.getElementById('longitude').innerHTML = longitude; 

    google.maps.event.addListener(e.overlay.getPath(), 'set_at', function() 
    { 
     // getPath(): return value: MVCArray<LatLng> 
     // getArray(): return value: Array<LatLng> 
     var arrayOne = e.overlay.getPath().getArray(); 
     document.getElementById('coordinates').innerHTML = arrayOne; 

     // var latitude = ? 
     // var longitude = ? 

     document.getElementById('latitude').innerHTML = latitude; 
     document.getElementById('longitude').innerHTML = longitude; 
    }); 

    google.maps.event.addListener(e.overlay.getPath(), 'insert_at', function() 
    { 
     // getPath(): return value: MVCArray<LatLng> 
     // getArray(): return value: Array<LatLng> 
     var arrayOne = e.overlay.getPath().getArray(); 
     document.getElementById('coordinates').innerHTML = arrayOne; 

     // var latitude = ? 
     // var longitude = ? 

     document.getElementById('latitude').innerHTML = latitude; 
     document.getElementById('longitude').innerHTML = longitude; 
     }); 
}); 

我碰到過幾個東西,比如getAt(),geometry.location.lat()和LatLng類,但我沒有碰到任何運氣。我將不勝感激任何幫助,謝謝。

回答

0

似乎是我的問題的解決方案可以在這裏找到https://stackoverflow.com/a/19488826

修改代碼,有點讓我可以實現我想要的輸出

var polygonBounds = e.overlay.getPath(); 
var testArray = []; 

for (var a = 0; a < polygonBounds.length; a++) 
{ 
    testArray.push(polygonBounds.getAt(a).lat(), polygonBounds.getAt(a).lng()); 
} 

var latPoint = 1; 
var lngPoint = 1; 


for (var b = 0; b < testArray.length; b += 2) 
{ 
    document.getElementById('latitude').innerHTML += ("Point " + [latPoint] + ": " + testArray[b] + "<br /><br />"); 
    latPoint++; 
} 

for (var c = 0; c < testArray.length; c += 2) 
{ 
    document.getElementById('longitude').innerHTML += ("Point " + [lngPoint] + ": " + testArray[c] + "<br /><br />"); 
    lngPoint++; 
} 

現在我只需要得到它的更新,如果多邊形移動或修改

相關問題