2012-04-17 9 views
1

境界や中心位置を文字列に変換して、それをサーバー側にjsonで送信して保存する方法はありますか?Store Map Google Maps API v3用のDBに繋ぐ

これらのものを文字列に変換しようとすると、私は尋ねています。私はAPIから変換エラーを取得していますか?

答えて

6

serialize関数を使用して、地図の境界と中心データを取得し、DBに格納します。

function serialize(map){ 
    var json = '{"bounds":'+map.getBounds().toString() + 
       ',"center":'+map.getCenter().toString()+"}"; 

    //'toString' returns values in '()', we need to replace them by '[]' 
    json = json.replace(/\(/g,"[").replace(/\)/g,"]"); 
    return json; 
} 

使用deserialize機能は、格納されたデータによってマップの状態を、更新するために:

function deserialize(map, json, useCenter){ 
    json = JSON.parse(json); 
    if(useCenter){ 
     map.setCenter(new google.maps.LatLng(json.center[0],json.center[1])); 
    }else{ 
     map.fitBounds(new google.maps.LatLngBounds(
         new google.maps.LatLng(json.bounds[0][0],json.bounds[0][1]), 
         new google.maps.LatLng(json.bounds[1][0],json.bounds[1][1]) 
        )); 
    } 
} 

重要:map.fitBoundsは、その引数の正確な境界に適合しません。このlinkを参照してください。

+0

これは実際には私のシナリオに合っているわけではありませんが、間違いなく正しい答えです。ありがとよ! – MrGorki