1

境界や中心位置を文字列に変換し、json でサーバー側に送信して保存する方法はありますか?

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

4

1 に答える 1

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引数の正確な境界には適合しません。このリンクを参照してください。

于 2012-04-17T21:51:06.317 に答える