我在网站(www.mysite.com/csv_report/myfile.csv)上的csv文件中有一些数据点,如下所示:
subject,report_by,Lat,Long
我想将每个数据点显示为Mapbox上的独立标记。我在Mapbox样本中找到了一个解决方案,该解决方案涉及添加单个标记,但找不到多个标记。
请帮助我找到解决问题的最佳方法。
非常感谢 扎尔
答案 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/)上的点击。