У меня есть gist
, созданный мной, который возвращает тип json
.
Я надувал эту суть как layer
на своей карте. У меня есть searchBar
, который можно использовать в качестве поискового запроса для объектов карты и зданий. Как получить все функции со свойством name в моем arrayList
, чтобы я мог надуть счетчик?
@Override
public boolean onMapClick(@NonNull LatLng point) {
PointF pointf = mapboxMap.getProjection().toScreenLocation(point);
RectF rectF = new RectF(pointf.x - 10, pointf.y - 10, pointf.x + 10, pointf.y + 10);
List<Feature> featureList = mapboxMap.queryRenderedFeatures(rectF, geoJsonLayerId);
if (featureList.size() > 0) {
for (Feature feature : featureList) {
Toast.makeText(SearchActivity.this, feature.getStringProperty("name"),
Toast.LENGTH_SHORT).show();
}
return true;
}
return false;
}
@Override
public void onMapReady(@NonNull final MapboxMap mapboxMap) {
SearchActivity.this.mapboxMap = mapboxMap;
mapboxMap.setStyle(Style.MAPBOX_STREETS, style -> {
mapboxMap.addOnMapClickListener(SearchActivity.this);
addGeoJsonSourceToMap(style);
// Create FillLayer with GeoJSON source and add the FillLayer to the map
style.addLayer(new FillLayer(geoJsonLayerId, geoJsonSourceId)
.withProperties(fillOpacity(0.5f)));
GeoJsonSource source = style.getSourceAs("population-source");
if (source != null){
List<Feature> features = source.querySourceFeatures(Expression.get("name"));
//set autocomplete textview
//Here, I want to fetch all names of buildings from my feature layer into my spinner array for the user to query rendered features,
String[] queries = getResources().getStringArray(features);
ArrayAdapter<String> adapter = new ArrayAdapter<>((this), android.R.layout.simple_list_item_1, queries);
search.setAdapter(adapter);
search.setThreshold(1);
}
});
}
private void addGeoJsonSourceToMap(@NonNull Style loadedMapStyle) {
try {
// Add GeoJsonSource to map
loadedMapStyle.addSource(new GeoJsonSource(geoJsonSourceId, new URI("URI LINK")));
} catch (Throwable throwable) {
Timber.e("Couldn't add GeoJsonSource to map - %s", throwable);
}
}