首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Openlayers 3:从多个特性获取数据

Openlayers 3:从多个特性获取数据
EN

Stack Overflow用户
提问于 2016-06-24 07:44:03
回答 1查看 592关注 0票数 0

我从文档中获得了这个例子,并添加了另一个特性。单击该功能时,将在弹出窗口中显示该功能数据。我添加了另一个具有不同数据的特性。如果我在系列中单击这些特性,它将显示我单击的第一个特性中的数据。如果我单击某个功能,单击其他地方,然后单击另一个功能:它的工作方式与预期的一样。

我创建了一个显示这个问题的小提琴。(在我的firefox中,只有当我单击地址栏左上角的“屏蔽”图标并选择“禁用此页面上的保护”时,地图才会显示。见这个问题)

似乎没有使用下面的示例代码获得正确的特性:

代码语言:javascript
运行
复制
// 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的问题,而是流行的问题。当我插入:

代码语言:javascript
运行
复制
console.log(feature.get('name'));

它会得到正确的数据。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-24 08:03:34

你在对方旁边加两分。如此接近,所以你不能轻视他们的视觉。将您的功能声明更改为:

代码语言:javascript
运行
复制
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。为了克服这个问题,您需要做一些肮脏的工作,并在每次单击时更新内容。使用这段代码来实现它

代码语言:javascript
运行
复制
  $(element).data("bs.popover").options.content= feature.get('name');
  $(element).popover("show");

和一把小提琴这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38008166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档