2011-09-26 14 views
5

ユーザーは、オーバーレイを使用してGoogleマップにさまざまなマーカーを追加できるアプリを作成しました。私は、ユーザーがそれを作成したときにアプリケーションがオーバーレイを保存して、後でアプリケーションを開いたときにマーカーがまだ存在するようにしたい。
現在のところ、アプリが再オープンされると、作成されたマーカーは消えてしまいます。私はインターネットを検索し、後で使用するためにマーカー/オーバーレイをオフラインで保存する方法を明確に理解していません。追加したGoogleマップのオーバーレイをアンドロイドアプリに保存するにはどうすればよいですか?

答えて

2
それはちょうどアイデア

ていますが、データベース内のマーカーを保存して、あなたのマップを再び開いたときにだけデータベースを照会し、再び地図上に置くことができる...

1

あなたは、いくつかの永続ストレージを使用する必要があります。 SQLiteはおそらくここでは最適なオプションです。オーバーレイにはlatとlngがあります。それらを取得し、それらと一緒に必要なデータをすべて取得し、これらすべてをSQLiteデータベースに格納します。アクティビティを開始すると、データベースからポイントを取得し、マップ上に表示します。

3

前述のとおり、some persistent storageを使用する必要があります。おそらくデータベースはあなたの特定のケースでは超過しています(経度と緯度のペアを単純に保存する必要がある場合)、共有環境設定がニーズに合っています。あなたは/ストアこれを読むために必要がある場合は

SharedPreferences.Editor editor = getSharedPreferences("name", 0).edit(); 
    JSONArray jsonArr = new JSONArray(); 
    JSONObject json; 
    for (int i = 0; i < user_markers.size(); i++) { // here I assume that user_markers is a list where you store markers added by user 
     json = new JSONObject(); 
     json.put("lat", user_markers.get(i).getLat()); 
     json.put("long", user_markers.get(i).getLong()); 
     jsonArr.put(json); 
    } 
    editor.putString("markers", jsonArr.toString()); 
    editor.commit(); 

:あなたはめったに/ストアこのデータを読む必要がない場合は、共有設定を文字列としてJSONArrayを置くことは最も簡単な(読書の面で、データを抽出する)解決策になりますデータをもう少し頻繁に使用すると、ids/indexesをSharedPreferencesの値に割り当てることができますが、これはより複雑な抽出メソッドを必要とする可能性があります。たとえば:

SharedPreferences.Editor editor = getSharedPreferences("name", 0).edit(); 
    int id; 
    for (int i = 0; i < user_markers.size(); i++) { // here I assume that user_markers is a list where you store markers added by user 
     id = user_markers.get(i).getId(); // some Id here 
     // or simply id = i; 
     editor.putString("markers_lat_" + id, user_markers.get(i).getLat()); 
     editor.putString("markers_long_" + id, user_markers.get(i).getLong()); 
    } 
    editor.commit(); 

は、すべての後、あなたはデータや複雑な構造のデータの大きな量を保存することを計画している場合、データベースを使用して検討すべきです。

+0

これは私もまだGR8作業私のアプリでこのトリックを試してみましたが、最良の方法です:) –

0

SQLiteデータベースを使用してユーザーデータを保存します。それらはシンプルであり、大量のデータに対してはSharedPreferencesより優れています。

More Info

Example

関連する問題