自作の地図アプリにて、以下の手順を実行すると設置したマーカーが全て消えてしまいます。
<手順>
1.マーカーを設置
2.設置したマーカーをタップし現れたGoogle Mapボタンをタップ
3.(新たにマーカーを設置するために)Google Mapの「共有」又は「場所を共有」で自作の地図アプリを選択
マーカーが消えてしまわないようにとSharedPreferencesを試してみましたが、アプリを終了させてもデータが残ったままになってしまうので失敗でした。
それ以外に良い方法はないかと考えたのですが浮かびませんでした。すみませんがご助力の程よろしくお願いいたします。
manifests
</activity> <activity android:name=".LocationActivity"> <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.APP_MAPS" /> <data android:mimeType="text/*" /> </intent-filter> </activity>
Javaソース
import icepick.Icepick; import icepick.State; public class LocationActivity extends FragmentActivity implements OnMapReadyCallback { @State int addMk = 0; //設置マーカーカウンター @State String[] sText = new String[ARRAY_MAX]; //マーカーテキスト格納用 private LatLng[] newlocation = new LatLng[ARRAY_MAX]; //設置マーカーの緯度経度格納用 private double[] lat = new double[ARRAY_MAX]; private double[] lng = new double[ARRAY_MAX]; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Icepick.restoreInstanceState(this, savedInstanceState); // 復元 //広告クリックして戻るとnewlocationでアプリが落ちるため、newlocationのみicepickから出して従来方式の保存復元に変更 if (savedInstanceState != null) { for (int i = 0; i < addMk; i++) { lat[i] = savedInstanceState.getDouble("Lat" + i); lng[i] = savedInstanceState.getDouble("Lng" + i); } for (int i = 0; i < addMk; i++) { newlocation[i] = new LatLng(lat[i], lng[i]); } } setContentView(R.layout.activity_maps); ~~~省略~~~ } public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); Icepick.saveInstanceState(this, outState); // 保存 for (int i = 0; i < addMk; i++) { outState.putDouble("Lat" + i, newlocation[i].latitude); outState.putDouble("Lng" + i, newlocation[i].longitude); } } @Override public void onMapReady(GoogleMap googleMap) { mMap = googleMap; //設定の復元 for (int i = 0; i < addMk; i++) { mMap.addMarker(new MarkerOptions().position(newlocation[i]).title(sText[i]).draggable(true)); } ~~~省略~~~ }
以上となります、よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。