微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Android的Mapbox上添加带有标题和描述的自定义标记?

如何解决如何在Android的Mapbox上添加带有标题和描述的自定义标记?

我想为地图上的每个标记添加标题和描述。现在,我在地图上添加标记,并通过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/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?