我以前使用以下方法过滤功能:
for (var i=0; i<features.length; i++)
{
if (features[i].attributes.color == 'blue')
.
.
但有时值可能是:深蓝色,浅蓝色等
所以我使用了match但仍然无法正常工作:
var x = "blue";
if (features[i].attributes.color.match(new RegExp(x, "ig")))
我收到此错误:
Cannot call method 'match' of undefined
最佳答案
似乎某些功能没有设置颜色属性。运行,例如:
for (var i=0; i<features.length; i++)
console.log(typeof features[i].attributes.color);
您可以在未定义的属性上使用==,但是不能在其上运行函数,这说明了为什么
== 'blue'
不会引发错误。var foo = {bar: 'Test'};
// That doesn't throw error
if (foo.baz == 'blue') console.log('Is blue');
// And that throws error
if (foo.baz.match(new RegExp('blue', 'ig'))) console.log('Is blue');
因此,您应该首先测试是否设置了color属性,然后对其进行测试:
for (var i=0; i<features.length; i++)
if (features[i].attributes.color && features[i].attributes.color == 'blue') ...
关于javascript - Javascript/OpenLayers匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13900966/