Good afternoon to everyone, how to create or insert a new overlay on my map for each point i read from file ? To read the points i created a class that implements FolderOverlay. Below the code of my project:.
GeoOverlay.java - Where read the points from the geojson file
MainActivity.java - Where create an object of class 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();
}
}
}
You don't use the GeoOverlay class as overlay at all, so you probably don't need it to extend FolderOverlay.
The main problem in your code is, that you are creating one instance of Marker and you just change it's position.
You should crate new marker for each position in your list.
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();