我正在尝试在我的Android应用程序中编写一些javascript,它将根据通过Android的PolyLineOptions对象传入的值从一个点到另一个点绘制一条线。
我已经编写了几个JSInterfaces来获取PolyLineOptions对象的相关信息,例如latlng和color,我可以让它画出细线,但是当我尝试改变它的颜色时,它不会做任何事情,我甚至尝试改变宽度,但仍然没有。
注意:我已经将颜色值写入日志并且它正确地通过,因此所有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 :(得分:2)
我已经弄清楚了。事实证明,在创建需要使用的功能时,不允许您设置样式:
var line = new ol.Feature({
geometry: lineString,
name: 'Line',
//style: styles
});
line.setStyle(styles);
我不明白为什么,所以如果有人可以解释那么随便回答,我会将你的答案标记为正确。