2012-08-30 54 views
1

我開發了一個基於Web的應用程序,用戶將在地圖上創建多邊形,並且數據庫 將返回感興趣的點。將Google地圖多邊形保存到PostgreSQL數據庫

問題是,postgreSQL以與Google地圖多邊形不同的方式保存多邊形。

那麼我如何將用戶多邊形保存到postgis?

我已經在使用google maps v3 api和geojson

回答

3

一些代碼會很有用。在沒有這個的情況下,這是一個最好的猜測通用答案:總的來說,你需要弄清楚如何將每種格式映射(轉換)爲另一種格式。然後,您可以在保存數據庫之前將其轉換爲適合數據庫的格式,並在檢索時將其從數據庫格式轉換爲Google地圖格式。我想每個多邊形都是一組經度/緯度的兩種格式,所以它不應該太難。

另外,由於您使用JSON,你可以只保存JSON文本字段在數據庫(或一個JSON場在即將到來的9.2版本的PostgreSQL):

http://www.postgresql.org/docs/9.2/static/datatype-json.html

但是,如果您想在數據庫中執行顯然會限制您的選項的地理查詢。

+0

確定問題解決了 –

1

以我JS文件我創建的形狀是多邊形

shape = new google.maps.Polygon({ 
Editable:true, 
strokeColor: 'FF0000', 
strokeOpacity: 0.8, 
strokeWeight: 1, 
fillColor: 'FF0000', 
fillOpacity: 0.4 
}); 

然後我創建函數addPoint

function addPoint(e) { 
shape.setMap(map); 
vertices= shape.getPath(); 
vertices.push(e.latLng); 
polygon.push(e.latLng); 
} 

我通過addPoint函數來映射對象

map = new google.maps.Map(document.getElementById("map"), mapOptions); 
google.maps.event.addListener(map,'click',addPoint); 

在我的html中,我有id = polygon的按鈕。我轉換座標Postgres的格式(長,LAT)

$("#polygon").click(function(e){ 
a=JSON.stringify(polygon); 
var c=JSON.parse(a); 
console.info(c); 
vertices.forEach(function(xy, i) { 
    x.push(xy.lng()+" "+xy.lat()); 
}); 
shape.setMap(map); 

其中包含了多邊形的變量是我把它叫做X 的我有一個AJAX調用傳遞多邊形陣列X到我的模型陣列

$.ajax({ 
url: 'myurl', 
type: 'post', 
data: {'polygon':x}, 
datatype: 'json', 
success: function(data) { 
console.info(data) 
} 
}); 

在我的模型(笨)我的多邊形(緯度,經度)轉換成Postgres的多邊形(長,LAT)

public function getPolygon($polygon){ 
header('Content-type: application/json'); 
$upolygon=""; 

$length=count($polygon); 
for ($i=0;$i<$length;$i++){ 
$upolygon.=$polygon[$i].' ,'; 
} 
$upolygon.=$polygon[0]; 
$query = "some query with the formated polygon"; 
foreach ($query->result() as $row) 
{ 
    $data[]= array("some data"); 
} 
echo json_encode($data); 
} 
相關問題