首页 > 解决方案 > 如何在 openlayers 4.6.5 中使用 map.on('click'...) 从 GeoJson-Multipoint 特征中获取单个特征

问题描述

当我单击我的 openlayers 地图(4.6.5)中的一个点时,我试图获取每个多点点的特征。点显示在地图上。

当我单击 MultiPoint 数组中的点时,我想在每个功能上添加一个弹出窗口。每个单独的点由 [LON, LAT, TIME] 组成。

以前用“LineString”几何体实现了这一点。所以我想知道这是否是“MULTIPOINT”作为几何图形的问题?

我的点击功能如下所示:

map.on('click', function (evt) {
        var pointfeature = map.forEachFeatureAtPixel(evt.pixel, function (feature, vectorLayer) {

            if (feature) {
console.log(feature)
               var coordinate = evt.coordinate;
                var hdms = ol.coordinate.toStringHDMS(ol.proj.transform(coordinate, 'EPSG:3857', 'EPSG:4326'));

            var geometry = feature.getGeometry(); 
            var mypoint = geometry.getClosestPoint(coordinate);
            var pointtoshow = point[1];
            content.innerHTML = '<p>feature </p>';
            overlay.setPosition(coordinate);
            }
            return feature;
        });
    });

我的 geojsonObject 看起来像这样:

var geojsonObject = {
        'type': 'FeatureCollection',
        'crs': {
            'type': 'name',
            'properties': {
                'name': 'EPSG:3857'
            }
        },
        'features':[
'type': 'Feature',
                'geometry': {
                    'type': 'MultiPoint',
                    'coordinates': 
                        mycoordinates().map(function (x) {

                            return ol.proj.transform([x[0], x[1]], 
   'EPSG:4326', 'EPSG:3857')
                        })
                    ,
                    "properties": {
                        "Time": mycoordinates().map(function (x)         
                    {
                            return x[2]
                    })
                }
            },{
        'type': 'Feature',
        'geometry': {
            'type': 'Point', 
            'coordinates': ol.proj.transform([refpointlon, refpointlat], 'EPSG:4326', 'EPSG:3857') 
        }]
};

我从 console.log(feature) 得到的内容如下:

Hk {Wa: {…}, qa: {…}, oa: {…}, g: 1, xp: 2, …}
N: {geometry: No}
Wa: {}
a: "geometry"
ab: {change:geometry: Array(1), change: Array(1), propertychange:         
Array(1)}
c: undefined
f: null
g: 1
i:
Ch: Hk {Wa: {…}, qa: {…}, oa: {…}, g: 1, xp: 2, …}
Dh: ƒ b(b)
Eh: false
listener: ƒ ()
target: No {Wa: {…}, qa: {…}, oa: {…}, g: 1, xp: 1, …}
type: "change"
__proto__: Object
j: undefined
oa: {change:geometry: Array(1), change: Array(1), propertychange:         
Array(1)}
qa: {}
xp: 2
__proto__: Vc

但这不包含要素坐标,也不包含要素属性:TIME,如 geojsonobject 中所指定。

关于为什么我没有获得个人功能信息的任何建议?

标签: javascriptopenlayersgeojson

解决方案


推荐阅读