当前位置: 首页 > 面试题库 >

如何使用bbox加载Open Layers 3 geojson矢量图层?

戚森
2023-03-14
问题内容

我正在努力构建OL3矢量层BBOX策略加载。到目前为止,我可以轻松地使用有效的json语法加载Geojson文件,但这是一种策略。我的另一种方法是使用ol.ServerVector,这对我的理解很容易返回带有回调的Javascript,但是我无法使其工作。

工作简单的Geojson层:

var vectorSource = new ol.source.GeoJSON(
({
  projection: 'EPSG:3857',
  preFeatureInsert: function(feature) {
    feature.geometry.transform('EPSG:4326', 'EPSG:3857');
  },
  url: 'geojson2.json'
}));

var vectorLayer = new ol.layer.Vector({ source: vectorSource, style: styleFunction });

BBOX尝试(移动时返回json,但是功能未加载到地图中):

    var vectorSource = new ol.source.ServerVector({
  format: new ol.format.GeoJSON(),
  loader: function(extent, resolution, projection) {
    var url = 'geojson2.php?p='+
        extent.join(',');
    $.ajax({
      url: url
    });
  },
  strategy: ol.loadingstrategy.bbox,
  projection: 'EPSG:3857',

});
// callback ?
var loadFeatures = function(response) {
  vectorSource.addFeatures(vectorSource.readFeatures(response));
};

JSON响应示例:

{"type":"FeatureCollection","features":[
{"type":"Feature","geometry":{"type":"Point","coordinates":[0,0]},"properties":{"label":"122.234-10/163"}},
{"type":"Feature","geometry":{"type":"Point","coordinates":[1,1],"properties":{"label":"132.222-1126"}}}
]}

问题答案:

您需要添加一个Ajax回调,以将功能部件添加到矢量源中:

var vectorSource = new ol.source.Vector({
  format: new ol.format.GeoJSON(),
  loader: function(extent, resolution, projection) {
    var url = 'geojson2.php?p=' + extent.join(',');
    $.ajax({
      url: url,
      success: function(data) {
        vectorSource.addFeatures(vectorSource.readFeatures(data));
      }
    }); 
  },
  projection: 'EPSG:3857',
  strategy: ol.loadingstrategy.bbox
});


 类似资料:
  • 我有一个矢量绘图,我想用浓咖啡测试。 矢量可绘制:ic_video_24dp 我有没有办法用浓缩咖啡对矢量绘图进行UI测试?任何帮助都将不胜感激。

  • 问题内容: 在尝试使用SVG的Java8 AppEngine标准环境中,出现下一个错误。当我尝试在POSL之类的XSLFSlide上绘制SVG 或使用Batik将SVG转换为PNG时,出现此错误。由于fontconfig找不到字体,因此似乎出现了问题。在debian发行版中,它通过安装解决。如何在AppEngine上解决? 问题答案: 我遇到了同样的问题,并通过设置system属性,明确告诉App

  • 我的应用程序中的所有图像目前都是jpg或png,这曾经是可以的。GUI是固定大小,适合于显示的任何屏幕,每个人都很高兴。 现在高分辨率和视网膜显示器更常见,正常大小的应用程序在某些屏幕上看起来很小(如果调整大小,则模糊不清),因此我想通过将它们转换为矢量图像(eps或svg)来更新图形以适应任何未来的分辨率进展。 在我这样做之前,JavaFX有办法像使用ImageViews一样使用矢量图像吗?看起

  • 在上一章中,我们学习了如何在Leaflet中使用标记。 除了标记,我们还可以添加各种形状,如圆形,多边形,矩形,折线等。在本章中,我们将讨论如何使用Google地图提供的形状。 Polyline 要使用Leaflet JavaScript库在地图上绘制折线叠加层,请按照以下步骤操作 - Step 1 - 通过传递“ div ”元素(字符串或对象)和映射选项(可选)来创建Map对象。 Step 2

  • 我是flutter的新手,上周才开始。我正在从在线课程中学习,然后我想在我的flutter应用程序中加载一个图像。但有一个错误是:

  • 在我的应用程序中,我允许用户设置背景颜色和图像。因此,为了确保所有必要的信息和图标都是可见的,我使用了带有不同颜色阴影的文本。通过在xml中设置阴影属性可以很容易地进行设置。 然而,我找不到在vector drawable上绘制轮廓的方法。我发现了类似的问题,但答案或多或少都是用阴影画出矩形或方形背景。这让我看起来太难看了。我想勾勒出形状的轮廓,而不是用shaddow将背景设置为正方形。