Добавить маркеры в Mapbox из файла CSV - PullRequest
0 голосов
/ 16 мая 2019

У меня есть несколько точек данных в CSV-файле, расположенном на моем веб-сайте (www.mysite.com/csv_report/myfile.csv), как показано ниже:

предмет, report_by, Lat, Long

Я хочу показать каждую из точек данных как независимые маркеры на Mapbox. Я нашел решение в примерах Mapbox о добавлении одного маркера, но ничего не найдено о нескольких маркерах.

Пожалуйста, помогите мне найти лучший способ решить мою проблему.

Большое спасибо Заря

1 Ответ

0 голосов
/ 17 мая 2019

Лучшим дополнением, вероятно, будет использование функции 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/).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...