2017-12-14 26 views
0

誰もが幸いに、ファイルから読み込んだ各ポイントの新しいオーバーレイを作成または挿入する方法を教えてください。 ポイントを読み取るために、私はFolderOverlayを実装するクラスを作成しました。私のプロジェクトのコードの下:。FolderOverlayを使用して新しいオーバーレイを作成する方法 - OSMDroid

GeoOverlay.java -

にGeoJSONファイルからのポイントを読んでMainActivity.java -クラスのオブジェクトを作成GeoOverlay.java

public class MainActivity extends AppCompatActivity { 
    private GeoOverlay overlay; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     MapView map = (MapView) findViewById(R.id.map); 
     map.setBuiltInZoomControls(true); 
     map.setMultiTouchControls(true); 
     try { 
      InputStream is = getApplicationContext().getResources().getAssets().open("map.geojson"); 
      overlay = new GeoOverlay(is); 
      overlay.getMyPositionList(); 
      Marker marker = new Marker(map); 
      IMapController mapController = map.getController(); 
      for(int i =0 ; i<overlay.getMyPositionList().size();i++) 
      { 
       marker.setPosition(overlay.getMyPositionList().get(i)); 
       map.getOverlays().add(marker); 
       map.invalidate(); 
      } 
      mapController.setCenter(overlay.getMyPositionList().get(0)); 
      Log.d("OVERLAY","PROVAO AD INSERIRE OVERLAY \n"); 
     }catch (IOException e) 
     { 
      e.printStackTrace(); 
      System.out.print("*--- ERRORE APERTURA FILE ---*\n"); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

ようこそStackOverflow。 FolderOverlayは他のオーバーレイのコンテナとして機能します。正しい答えはおそらく "いいえ、そうではありません"です。たぶんあなたの質問を再定式化しようとするので、あなたが本当にやりたいことがわかっています。また、ここで(あなたの最初のバッジを得るために)あなたの道を知るために[ウェルカムツアー](https://stackoverflow.com/tour)、[MVCEを作成する方法]( https://stackoverflow.com/help/mcve)また、「How to Ask Good Questions」(https://stackoverflow.com/help/how-to-ask)もチェックして、フィードバックや有用な回答を得るチャンスを増やしてください。 –

+0

こんにちは、あなたの返事をありがとう、私は質問を再フォーマットしました。 –

答えて

1

あなたは使用しませんGeoOverlayクラスをオーバーレイとして使用すると、おそらくFolderOverlayを拡張する必要はありません。

あなたのコードの主な問題は、Markerのインスタンスを1つ作成していて、その位置を変更することだけです。

リスト内の各位置に新しいマーカーを付ける必要があります。

IMapController mapController = map.getController(); 
for(int i =0 ; i<overlay.getMyPositionList().size();i++) 
{ 
    Marker marker = new Marker(map); 
    marker.setPosition(overlay.getMyPositionList().get(i)); 
    map.getOverlays().add(marker); 
} 
mapController.setCenter(overlay.getMyPositionList().get(0)); 
map.invalidate(); 
+0

タンク、今それは働く:) –

関連する問題