事務屋さんの備忘録

主にプログラミングのことを書いていきます。メモというか備忘録的な感じで。プログラミングといっても、私はプロのエンジニアでも本職のプログラマーでもありません。単なる事務職をやってるサラリーマンで、空いた時間にちょこちょこっとプログラミングしてる程度です。よってこのブログに記載したことが誤っていたり、もっとよい方法がある場合もあると思います。その場合には、ご指摘いただけると嬉しいです。また、このブログを読んで役に立った、なんて方がいらっしゃったら幸いですね。

Googleマップ上の複数のマーカーを削除する

マーカーをリストに格納しておいて、1件ずつremoveしていきます。
もっと良い方法がありそう・・・

public class MapsActivity extends FragmentActivity
        implements LocationListener, LocationSource, LoaderManager.LoaderCallbacks<JSONArray> {

    private static final String URLTEXT = "https://xxxxxxxxxxxxxxxxxxxxx";
    private static final int ADDRESSLOADER_ID = 0;

    // 既存マーカーを消去する為
    private List<Marker> markerArray = new ArrayList<Marker>();
    private Marker marker = null;

    private GoogleMap mMap; // Might be null if Google Play services APK is not available.
    private OnLocationChangedListener mListener;
    private LocationManager locationManager;

    
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    @Override
    public void onLoadFinished(Loader<JSONArray> loader, JSONArray data) {

        if (data != null) {

            // 既存のマーカーを消す処理
            for (int i = 0 ; i < markerArray.size() ; i++){
                markerArray.get(i).remove();
            }
            markerArray.clear();

            try {

                for (int i = 0; i < data.length(); i++) {

                    JSONObject jsData = data.getJSONObject(i);

                    String locationName = jsData.getString("LocationName");
                    String prefecture = jsData.getString("Perfecture");
                    double latitude = jsData.getDouble("Latitude");
                    double longitude = jsData.getDouble("Longitude");

                    MarkerOptions options = new MarkerOptions();
                    options.position(new LatLng(latitude, longitude));
                    options.title(locationName);
                    options.snippet(prefecture);
                    marker = mMap.addMarker(options);

                    markerArray.add(marker); // リストに格納(削除する為)

                }

            } catch (JSONException e) {
                Log.d("onLoadFinished", "JSONのパースに失敗しました。 JSONException=" + e);
            }


        }else{
            Log.d("onLoadFinished", "onLoadFinished error!");
        }

    }

}