Как установить текст на LineString в Mapbox SDK? - PullRequest
0 голосов
/ 15 января 2019

Я работаю с LineLayer из Mapbox SDK и у меня возникают проблемы с отображением текста в строке.Существует пример из Mapbox.

Это то, что у меня есть до сих пор:

// Create a list to store our line coordinates.
routeCoordinates = new ArrayList<>();
routeCoordinates.add(Point.fromLngLat(-95.9928, 36.1540));
routeCoordinates.add(Point.fromLngLat(-95.9870, 36.1397));

// Create the LineString from the list of coordinates and then make a GeoJSON
// FeatureCollection so we can add the line to our map as a layer.
LineString lineString = LineString.fromLngLats(routeCoordinates);
FeatureCollection featureCollection = FeatureCollection.fromFeatures(new com.mapbox.geojson.Feature[] {com.mapbox.geojson.Feature.fromGeometry(lineString)});
Source geoJsonSource = new GeoJsonSource("line-source", featureCollection);
mapbox.addSource(geoJsonSource);

LineLayer lineLayer = new LineLayer("linelayer", "line-source");
// The layer properties for our line. This is where we make the line dotted, set the
// color, etc.
lineLayer.setProperties(
     PropertyFactory.lineCap(Property.LINE_CAP_ROUND),
     PropertyFactory.lineJoin(Property.LINE_JOIN_ROUND),
     PropertyFactory.lineWidth(5f),
     PropertyFactory.lineColor(Color.parseColor("#e55e5e")),
     PropertyFactory.textField("some text"),
     PropertyFactory.textColor(Color.parseColor("#ffffff"))
);
mapbox.addLayer(lineLayer);

Это не добавит строку в строку, как показано ниже.

enter image description here

1 Ответ

0 голосов
/ 17 января 2019

Класс LineLayer основан на слое линий в Mapbox GL JS. Вы можете увидеть доступные свойства этого типа слоя здесь , в документации по спецификации стиля. Как видите, textField и textColor не являются доступными свойствами.

Один из способов сделать это - создать дополнительный слой - на этот раз типа SymbolLayer (https://docs.mapbox.com/android/api/map-sdk/7.0.0/com/mapbox/mapboxsdk/style/layers/SymbolLayer.html).). Этот слой будет иметь те же данные строки из вашего GeoJsonSource. Вы можете прочитать больше о слоях символов здесь , но вы можете установить текст для этого слоя, а затем установить для свойства symbol -place значение line или line-center чтобы текст выровнялся правильно.

...