【问题标题】:Openlayers 3: Getting data from multiple featuresOpenlayers 3:从多个特征中获取数据
【发布时间】:2016-06-24 16:54:04
【问题描述】:

我从docs 中获取示例并添加了另一个功能。单击后,特征数据将显示在弹出窗口中。 我添加了另一个具有不同数据的功能。如果我单击系列中的功能,它将显示我单击的第一个功能的数据。如果我单击一个功能,请单击其他位置,然后单击另一个功能:它按预期工作。

我创建了一个 jsfiddle 来显示这个问题。 (在我的 Firefox 中,只有当我单击地址栏左上角的“盾牌”图标并选择“禁用此页面上的保护”时,地图才会显示。请参阅this question

使用此示例代码似乎没有采用正确的功能:

// display popup on click
map.on('click', function(evt) {
  var feature = map.forEachFeatureAtPixel(evt.pixel,
      function(feature, layer) {
        return feature;
      });
  if (feature) {
    var geometry = feature.getGeometry();
    var coord = geometry.getCoordinates();
    popup.setPosition(coord);
    $(element).popover({
      'placement': 'top',
      'html': true,
      'content': feature.get('name')
    });
    $(element).popover('show');
  } else {
    $(element).popover('destroy');
  }
});

我的目标是直接一一点击特征,得到正确的数据显示。

编辑: 似乎这不是 OpenLayers 的问题,而是弹出框的问题。当我插入时:

console.log(feature.get('name'));

它会提供正确的数据。

【问题讨论】:

    标签: javascript openlayers-3


    【解决方案1】:

    您添加两个相邻的点。彼此如此接近,因此您无法在视觉上掩盖它们。 将您的功能声明更改为:

    var iconFeature = new ol.Feature({
      geometry: new ol.geom.Point([0, 0]),
      name: 'Null Island',
      population: 4000,
      rainfall: 500
    });
    
    var iconFeature2 = new ol.Feature({
      geometry: new ol.geom.Point([100000, 100000]),//here is the change
      name: 'Null Null Island',
      population: 200,
      rainfall: 100
    });
    

    另请注意,地图的默认投影是 EPSG:3857。您尝试传递的坐标似乎在 4326 上。

    为了正确起见,您还声明了两次iconStyle,这没有任何区别

    更新

    您的主要问题来自引导程序popover。要克服这个问题,您需要做一些肮脏的工作,并在每次点击时动态更新内容。使用这段代码来实现它

      $(element).data("bs.popover").options.content= feature.get('name');
      $(element).popover("show");
    

    还有一把小提琴here

    【讨论】:

    • jsfiddle 未正确保存。几分钟前,当我意识到问题时,我已经更新了链接。
    • 好了,现在更清楚了。从您的 https 中删除 s 以获取地图框图块。 jsfiddle.net/zzojm1va 。我正在检查你的问题。如果我想出什么我会告诉你的
    • 好的,我已经更新了我的答案来解决你的主要问题。
    • 我同时提出了问题的根源 :D 但是感谢您的解决方案。我不知道如何正确更新弹出框。这帮助很大!
    猜你喜欢
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多