问题描述
我想为地图上的每个标记添加标题和描述。现在,我在地图上添加标记,并通过GET调用从服务器获取数据,然后为每个对象创建标记。
public void onMapReady(@NonNull final MapBoxMap mapBoxMap) {
MainActivity.this.mapBoxMap = mapBoxMap;
StringRequest request = new StringRequest(url,new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONArray jsonArray = new JSONArray(response);
List<Feature> symbolLayerIconFeatureList = new ArrayList<>();
for(int i = 0; i < jsonArray.length(); i++){
JSONObject crag = jsonArray.getJSONObject(i);
String description = crag.getString("descrizione")
String name = crag.getString("nome");
Double lng = crag.getDouble("longitudine");
Double lat = crag.getDouble("latitudine");
symbolLayerIconFeatureList.add(Feature.fromGeometry(
Point.fromLngLat(lng,lat)));
}
mapBoxMap.setStyle(new Style.Builder().fromUri("mapBox://styles/mapBox/cjf4m44iw0uza2spb3q0a7s41")
.withImage(ICON_ID,BitmapFactory.decodeResource(
MainActivity.this.getResources(),R.drawable.icona_falesia))
.withSource(new GeoJsonSource(SOURCE_ID,FeatureCollection.fromFeatures(symbolLayerIconFeatureList)))
.withLayer(new SymbolLayer(LAYER_ID,SOURCE_ID)
.withProperties(
iconImage(ICON_ID),iconAllowOverlap(true),iconIgnorePlacement(true)
)
),new Style.OnStyleLoaded() {
@Override
public void onStyleLoaded(@NonNull Style style) {
}
});
} catch (JSONException e){
e.printstacktrace();
}
}
},new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printstacktrace();
}
});
mQueue.add(request);
}
这是我的onMapReady函数,其中获取数据并创建标记。如何为每个标记添加标题和描述?
解决方法
如果您只想与{一起显示文本,则还需要使用textField()
,textOffset()
,textIgnorePlacement()
,textAllowOverlap()
和textField()
{1}}图标。为每个SymbolLayer
添加名称和描述是使其正常工作的关键。
我已经修改https://docs.mapbox.com/android/maps/examples/marker-symbol-layer/来创建在https://i.imgur.com/5LzSzRf.mp4看到的GIF。您可以查看代码中发生了什么,然后在GET Feature
回调中对其进行调整以使其与您的实现相匹配。
onResponse()
如果要创建信息窗口,请参见https://docs.mapbox.com/android/maps/examples/symbol-layer-info-window/。