2016-10-27 4 views
0

Я пытаюсь увеличить ширину хода 1px вокруг внешней части многоугольника, используя Mapbox Android SDK версии 4.2.0.beta4.Как изменить размер хода многоугольника с помощью Mapbox Android SDK

Сначала я попытался использовать PolygonOptions, но не было никакой опции.

public Polygon addPolygon(MapboxMap mapboxMap) { 
    PolygonOptions polygonOptions = new PolygonOptions() 
        .addAll(latLngs) 
        .alpha(ALPHA_UNSELECTED) 
        .fillColor(FILL_COLOR) 
        .strokeColor(BORDER_COLOR); 

    // no option for stroke width 

    return mapboxMap.addPolygon(polygonOptions); 
} 

Затем я попытался с помощью с помощью нового выполнения стиля API, как это определено в стиле Spec, но не мог найти подходящий идентификатор уровня, я попробовал «фон» https://www.mapbox.com/mapbox-gl-style-spec/

public void changeStrokeWidth(MapboxMap mapboxMap) { 
     Layer styleLayer = mapboxMap.getLayer("background"); 

     styleLayer.setProperties(PropertyFactory.lineWidth(10f)); 
} 

Кто-нибудь знает как сделать эту работу, или мне просто нужно создать свой собственный набор полилиний поверх вершины полигона, чтобы подражать этому поведению?

ответ

0

У вас есть несколько вариантов здесь. В настоящее время мы не предлагаем способ увеличить многоугольник ширину обводки, но вы можете:

  1. Добавить полилинии с использованием тех же latlng S, составляющие многоугольник. Это, безусловно, самый простой способ, но вы должны учитывать, что полилинии добавляются поверх карты (иногда прикрывая ярлыки).

  2. Ваш второй вариант был бы таким, как вы упомянули, добавив линеек на карту, используя ту же геометрию, что и многоугольник. Вот an example, показывающий, как взять точки и создать такой слой.

Дайте мне знать, если у вас есть дополнительные вопросы.

+0

Большое спасибо за информацию. FYI есть пара билетов, которые были закрыты на GitHub, которые создают впечатление, что она была покрыта новыми стилями среды выполнения: https://github.com/mapbox/mapbox-gl-native/issues/1737 https://github.com/mapbox/mapbox-gl-native/issues/324 –

+0

Скорее старые билеты;) это было до того, как мы на самом деле реализовали стиль выполнения. Мы по-прежнему работаем над улучшением SDK и рассмотрели усовершенствования аннотаций (включая полигоны) в следующем выпуске. – cammace

0
//Hi, Guys. Below is the simple example to change the properties of polygon border. Hope it will help you.// 

{ 

List<LatLng> plotPolygon = new ArrayList<>(); 

List<com.mapbox.services.commons.models.Position> coordinates = new ArrayList<>(); 

        plotPolygon.add(new LatLng(18.9965099,75.7316343)); 
        plotPolygon.add(new LatLng(20.8858018,74.7288414)); 
        plotPolygon.add(new LatLng(21.1612315,79.0024702)); 
        plotPolygon.add(new LatLng(18.7918749,78.899195)); 
        plotPolygon.add(new LatLng(18.9965099,75.7316343)); 

        Polygon polygon1 = mapboxMap.addPolygon(new PolygonOptions() 
          .addAll(plotPolygon) 
        );   
        polygon1.setFillColor(Color.parseColor("#3bb2d0")); 

Ниже мы создаем список координат границы полигона.

    coordinates.add(com.mapbox.services.commons.models.Position.fromCoordinates(75.7316343 , 18.9965099)); 
        coordinates.add(com.mapbox.services.commons.models.Position.fromCoordinates(74.7288414 , 20.8858018)); 
        coordinates.add(com.mapbox.services.commons.models.Position.fromCoordinates(79.0024702 , 21.1612315)); 
        coordinates.add(com.mapbox.services.commons.models.Position.fromCoordinates(78.899195 , 18.7918749)); 
        coordinates.add(com.mapbox.services.commons.models.Position.fromCoordinates(75.7316343 , 18.9965099)); 

changeStrokeProperties(mapboxMap , coordinates); 

} 

public void changeStrokeProperties(MapboxMap mapboxMap , List<com.mapbox.services.commons.models.Position> coordinates) { 

// 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.// 

    final Feature lineFeature =  Feature.fromGeometry(LineString.fromCoordinates(coordinates)); 

     final GeoJsonSource source = new GeoJsonSource(
       "route", FeatureCollection.fromFeatures(new Feature[] { lineFeature })); 


      mapboxMap.addSource(source); 


      LineLayer lineLayer = new LineLayer("linelayer", "route"); 

      lineLayer.setProperties(
        PropertyFactory.lineDasharray(new Float[]{0.01f, 2f}), 
        PropertyFactory.lineCap(Property.LINE_CAP_ROUND), 
        PropertyFactory.lineJoin(Property.LINE_JOIN_ROUND), 
        PropertyFactory.lineWidth(5f), 
        PropertyFactory.lineColor(Color.parseColor("#e55e5e")) 

      ); 
      mapboxMap.addLayer(lineLayer); 

    } 

 Смежные вопросы

  • Нет связанных вопросов^_^