前回、メインスレッドで緯度経度の入ったcsvファイルを読み込んでgooglemap上に座標を埋め込むことができたのですが、
重かったので,HandleThreadを使って別スレッドで読み込もうとしたら何故かマーカーが一つしか出なくなってしまいました。
HandlerThreadを読み込んで
// CSVの読み込みとマーカー設置.処理が重いので別スレッドで実行. HandlerThread handlerThread = new HandlerThread("AddMarker"); handlerThread.start(); Handler handler = new Handler(handlerThread.getLooper()); handler.post(new Runnable() { @Override public void run() { // AssetManagerの呼び出し AssetManager assetManager = getResources().getAssets(); try { // CSVファイルの読み込み InputStream is = assetManager.open("hoge.csv"); InputStreamReader inputStreamReader = new InputStreamReader(is); BufferedReader bufferReader = new BufferedReader(inputStreamReader); String line = ""; while ((line = bufferReader.readLine()) != null) { mMain.mDblLatitude = Double.parseDouble(line.split(",")[0]); mMain.mDblLongitude = Double.parseDouble(line.split(",")[1]); // UIスレッドでマーカー設置. getCsvHandler.sendEmptyMessage(1); } bufferReader.close(); } catch (IOException e) { e.printStackTrace(); System.out.println("ダメやで"); } } });
下のコードをメインスレッドで呼び出しています。
@SuppressLint("HandlerLeak") Handler getCsvHandler = new Handler(){ public void handleMessage(Message msg) { addMarker(); } }; public void addMarker() { if (mMap != null) { // 表示したマップにマーカーを追加する. mMap.addMarker(new MarkerOptions().position( new LatLng(mMain.mDblLatitude, mMain.mDblLongitude)) .icon(BitmapDescriptorFactory.fromBitmap(resizeMapIcons("book", 200,200)))); } }
悩んでいるのですがよくわかりません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/22 02:50
2018/01/22 23:59
2018/01/24 17:36