从CSV文件向Mapbox添加标记

时间:2019-05-16 19:50:16

标签: android csv url add markers

我在网站(www.mysite.com/csv_report/myfile.csv)上的csv文件中有一些数据点,如下所示:

subject,report_by,Lat,Long

我想将每个数据点显示为Mapbox上的独立标记。我在Mapbox样本中找到了一个解决方案,该解决方案涉及添加单个标记,但找不到多个标记。

请帮助我找到解决问题的最佳方法。

非常感谢 扎尔

1 个答案:

答案 0 :(得分:0)

您最好的选择可能是使用Mapbox提供的源/图层功能。

源包含您的数据点,在这些层中,您可以将其视为HTML样式表。它包含有关数据点外观的信息。

对于创建图层,您有不同的选项,具体取决于您希望标记的外观。如果要显示自己的图标,则必须使用SymbolLayer,但还有更多(CircleLayer用于显示点/圆,...)

要创建源,请使用类似以下内容

style.addLayer(
    new SymbolLayer(YOUR_LAYER_ID_STRING, YOUR_SOURCE_ID_STRING)
                    .withProperties(
                        // here you can define things like the icon
                        // icon color
                        // icon size
                        // ... many more. Have a look at the Property class
                    )
);

您还可以根据商品的样式设置商品的样式。它在Mapbox中称为数据驱动的样式。请参阅我的其他答案,或许可以进一步了解。

要创建源,请使用以下内容

ArrayList<Feature> features = new ArrayList<>();

Iterate over your CSV items {
    JsonObject jsonObject = new JsonObject();
    jsonObject.addProperty("subject_key", item.subjectValue);
    jsonObject.addProperty("report_key", item.reportByValue);

    features.add(Feature.fromGeometry(Point.fromLngLat(item.getLat(), item.getLon()), jsonObject);
}

FeatureCollection featureCollection = FeatureCollection.fromFeatures(features);
style.addSource(new GeoJsonSource(YOUR_SOURCE_ID_STRING, featureCollection, new GeoJsonOptions()));

您还可以让点击侦听器捕获标记(https://docs.mapbox.com/android/maps/examples/click-on-a-single-layer/)上的点击。