2016-02-03 3 views
1

Я пытаюсь написать javascript в своем приложении для Android, которое будет рисовать линию из одной точки в другую на основе значений, переданных через объект PolyLineOptions от android.Изменение цвета ol.geom.LineString в открытых слоях 3

Я написал пару JSI-интерфейсов для получения соответствующей информации из объекта PolyLineOptions, такого как latlng и color, и я могу заставить его рисовать линию отлично, однако, когда я пытаюсь изменить ее цвет, t ничего, я даже попытался изменить ширину, и все равно ничего.

ПРИМЕЧАНИЕ. Я написал значение цвета для журнала, и оно выполняется правильно, поэтому все материалы JSInterface работают должным образом.

function drawPolyLine(polyLine){ 

if(polyLine != null){ 

    var list = window.JSInterface.getPointsFromPolyLine(polyLine) 

    var count = window.JSInterface.getLengthFromLatLngList(list) 

    for(var i = 0; i < count; i+=2) 
    { 
     var lat1 = window.JSInterface.getLatFromLatLngList(list, i); 
     var lng1 = window.JSInterface.getLngFromLatLngList(list, i); 
     var lat2 = window.JSInterface.getLatFromLatLngList(list, i+1); 
     var lng2 = window.JSInterface.getLngFromLatLngList(list, i+1); 

     var coordinates = [[lng1,lat1],[lng2,lat2]]; 

     var lineString = new ol.geom.LineString(coordinates); 
     lineString.transform('EPSG:4326', 'EPSG:3857'); 

     var color = window.JSInterface.getColorFromPolyLine(polyLine); 

     var styles = [ 
     // linestring 
     new ol.style.Style({ 
      stroke: new ol.style.Stroke({ 
      color: '#ffcc33', 
      width: 2 
      }) 
     }) 
     ]; 

     var line = new ol.Feature({ 
        geometry: lineString, 
        name: 'Line', 
        style: styles 
       }); 
     linesSource.addFeature(line); 

    } 
} 

}

ли кто-нибудь сможет помочь мне понять, что я делаю неправильно? Кажется, он полностью игнорирует стиль. Я предполагаю, что это что-то глупое, но я просто не вижу его.

+0

Вы не использовали цвет, возвращенный из окна. JSInterface.getColorFromPolyLine (polyLine) в вашем стиле. Вы установили цвет: '# ffcc33'. Таким образом, «# ffcc33» будет цветом вашей линии. – itsyahani

+0

Извините, что это был всего лишь код, который я скопировал из другого места и забыл изменить его. Дело не в этом, оно полностью игнорировало стиль. Оказывается, если вы используете line.setStyle (стили), то он работает. но путем установки его в создании функции нет. Я не знаю, почему – Keithin8a

ответ

1

Я понял это. Получается, что вы не можете установить стиль при создании функции необходимо использовать:

  var line = new ol.Feature({ 
        geometry: lineString, 
        name: 'Line', 
        //style: styles 
       }); 

       line.setStyle(styles); 

Я не понимаю, почему, так что если кто-то может объяснить, то не стесняйтесь ответить, и я буду отметьте свой ответ как правильный.

+2

'style' не может быть установлен в конструкторе' ol.Feature'. То же самое с 'id', вы должны использовать' feature.setId ('foo') '. Конечно, основные разработчики имеют для этого свои основания. –

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