I am trying to put about 40 markers on the map scattered across the large area. I found the code to do so but it clusters the nearby markers, but I want it to show all the markers as they are regardless of zoom levels.
These are the codes I tried.
Mapbox github :- It works fine but it makes clusters of nearby markers.
This code doesn't work for me as android can't resolve methods
featureCollection.getFeatures()
,f.getGeometry()
,mapView.addMarker
,coordinates.getLatitude()
andcoordinates.getLongitude()
public class MainActivity extends AppCompatActivity implements OnMapReadyCallback { private MapView mapView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Mapbox.getInstance(this, getString(R.string.mapbox_access_token)); setContentView(R.layout.activity_main); mapView = findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); mapView.getMapAsync(this); } @Override public void onMapReady(MapboxMap mapboxMap) { this.mapboxMap = mapboxMap; try{ Uri uriMap = Uri.parse("https://dl.dropbox.com/s/9jln7v48lp3lb7e/data.geojson?dl=0"); String geoJsonString = getStringFromFile(uriMap,MainActivity.this); GeoJsonSource source = new GeoJsonSource("geojson", geoJsonString); mapboxMap.addSource(source); mapboxMap.addLayer(new LineLayer("geojson", "geojson")); FeatureCollection featureCollection = FeatureCollection.fromJson(geoJsonString); List<Feature> features = featureCollection.getFeatures(); for (Feature f : features) { if (f.getGeometry() instanceof Point) { Position coordinates = (Position) f.getGeometry().getCoordinates(); mapView.addMarker( new MarkerViewOptions().position(new LatLng(coordinates.getLatitude(), coordinates.getLongitude())) ); } } }catch(Exception e){ Toast.makeText(this, e.toString(), Toast.LENGTH_SHORT).show(); } } private static String convertStreamToString(InputStream is) throws Exception { BufferedReader reader = new BufferedReader(new InputStreamReader(is)); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line).append("\n"); } reader.close(); return sb.toString(); } public static String getStringFromFile(Uri fileUri, Context context) throws Exception { InputStream fin = context.getContentResolver().openInputStream(fileUri); String ret = convertStreamToString(fin); fin.close(); return ret; } }
P.S it would be great if I can do it without any libraries.