OpenLayers 5添加样式时不显示具有功能的矢量图层

时间:2019-04-15 13:36:25

标签: openlayers openlayers-5

我一直在尝试在OpenLayers 5的地图上放置一个简单的标记(建模为ol.geom.Point)并设置其样式。我创建一个包装此ol.geom.Point的功能,然后创建一个使用它的VectorSource,然后实例化一个VectorLayer并将该源作为源,如以下代码所示:

import 'ol/ol.css';
import Map from 'ol/Map';
import View from 'ol/View';
import VectorLayer from 'ol/layer/Vector';
import VectorSource from 'ol/source/Vector';
import Style from 'ol/style/Style';
import Stroke from 'ol/style/Stroke';
import GeoJSON from 'ol/format/GeoJSON';
import Feature from 'ol/Feature';
import Point from 'ol/geom/Point';

let markerFeature = new Feature({
    geometry: new Point([0, 10000000 ]),
});
let markerSource = new VectorSource({
    features: [markerFeature],
});
let markerLayer = new VectorLayer({
    source: markerSource,
});

let markerView = new View({
    center: [0, 0],
    zoom: 2,
});

new Map({
    target: 'map-container',
    layers: [
        new VectorLayer({
            source: new VectorSource({
                format: new GeoJSON(),
                url: './data/countries.json',
            }),
        }),
        markerLayer
    ],
    view: markerView
});

这可以实现我的期望:在坐标[0,0]上绘制一个点。但是,当我向包含这样的红色笔触的markerLayer对象添加简单样式时,OpenLayers似乎什么也没画:

let markerLayer = new VectorLayer({
    source: markerSource,
    style: new Style({
        stroke: new Stroke({color: 'red'}),
    }),
});

我用yarn来运行项目。我没有编译错误。我在浏览器控制台中也没有收到任何错误。在Firefox,Chrome和Edge中也会发生相同的问题。

我想知道以前是否有人遇到过与此看似微不足道的任务类似的问题。有人对罪魁祸首有什么建议吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

请使用:

func tableView(_ tableView: UITableView, didHighlightRowAt indexPath: IndexPath) {
        debugPrint("did hightlight")
        let cell = tableView.cellForRow(at: indexPath) as? RestaurantTVC
        UIView.animate(withDuration: 0.75) {
            cell?.viewShadow.transform = CGAffineTransform(scaleX: 0.9, y: 0.9)
        }
    }

    func tableView(_ tableView: UITableView, didUnhighlightRowAt indexPath: IndexPath) {
        debugPrint("unhightlight")
        let cell = tableView.cellForRow(at: indexPath) as? RestaurantTVC
        UIView.animate(withDuration: 0.3) {
             cell?.viewShadow.transform = CGAffineTransform.identity
        }
    }