Openlayers:来自局部变量的向量层
Openlayers: Vector Layer from Local Variable
我正在使用 OpenLayers 根据 json 数据制作地图。我必须加载一次(使用 PHP)来检查时间戳和验证信息。那时,我宁愿输出一个 javascript 变量,让 OL 使用它。我似乎无法在文档中找到任何内容来完成此操作。
理想情况下,我会将 'url': 'latest.json'
更改为 'local': json_variable
var pointsSource = new ol.source.GeoJSON({
'projection': map.getView().getProjection(),
'url': 'latest.json'
});
var pointsLayer = new ol.layer.Vector({
source: pointsSource,
style: new ol.style.Style({
image: new ol.style.Icon(({
anchor: [0.5, 40],
anchorXUnits: 'fraction',
anchorYUnits: 'pixels',
src: 'openlayers/marker-icon.png',
}))
})
});
map.addLayer(pointsLayer);
您可以通过参数 'object' 传入您的 geojson 数据。
OL3 src 的可读性很强,通常阅读它来确定要做什么比查找文档更快!我假设您使用的是 ol3.4 或更早版本;这是 geojson 的 3.2 src 代码:
https://github.com/openlayers/ol3/blob/v3.2.0/src/ol/source/geojsonsource.js
你可以看到它需要一个对象参数,它需要一个 JS 对象,这是 JSON.parse("...your geojson string here...")
的结果
所以像这样:
var geojson_cache = "<?php output from PHP here ?>"
var geojson_object = JSON.parse(geojson_cache)
var pointsSource = new ol.source.GeoJSON({
'projection': map.getView().getProjection(),
object: geojson_object
});
应该做你需要的。
另外仅供参考——我在上面提到了 OL3.4 或更早的版本——原因是这个 class 在 3.5 中不再存在。从上面的 src 文件中可以看出,这个 class 只不过是 StaticVector 的包装器,附加了 ol.format.GeoJSON
格式化程序。这已经过重构,将被 ol.source.Vector
取代,您提供 ol.format.GeoJSON
格式化程序。阅读这些注释中的 'New Vector API':
我正在使用 OpenLayers 根据 json 数据制作地图。我必须加载一次(使用 PHP)来检查时间戳和验证信息。那时,我宁愿输出一个 javascript 变量,让 OL 使用它。我似乎无法在文档中找到任何内容来完成此操作。
理想情况下,我会将 'url': 'latest.json'
更改为 'local': json_variable
var pointsSource = new ol.source.GeoJSON({
'projection': map.getView().getProjection(),
'url': 'latest.json'
});
var pointsLayer = new ol.layer.Vector({
source: pointsSource,
style: new ol.style.Style({
image: new ol.style.Icon(({
anchor: [0.5, 40],
anchorXUnits: 'fraction',
anchorYUnits: 'pixels',
src: 'openlayers/marker-icon.png',
}))
})
});
map.addLayer(pointsLayer);
您可以通过参数 'object' 传入您的 geojson 数据。
OL3 src 的可读性很强,通常阅读它来确定要做什么比查找文档更快!我假设您使用的是 ol3.4 或更早版本;这是 geojson 的 3.2 src 代码:
https://github.com/openlayers/ol3/blob/v3.2.0/src/ol/source/geojsonsource.js
你可以看到它需要一个对象参数,它需要一个 JS 对象,这是 JSON.parse("...your geojson string here...")
所以像这样:
var geojson_cache = "<?php output from PHP here ?>"
var geojson_object = JSON.parse(geojson_cache)
var pointsSource = new ol.source.GeoJSON({
'projection': map.getView().getProjection(),
object: geojson_object
});
应该做你需要的。
另外仅供参考——我在上面提到了 OL3.4 或更早的版本——原因是这个 class 在 3.5 中不再存在。从上面的 src 文件中可以看出,这个 class 只不过是 StaticVector 的包装器,附加了 ol.format.GeoJSON
格式化程序。这已经过重构,将被 ol.source.Vector
取代,您提供 ol.format.GeoJSON
格式化程序。阅读这些注释中的 'New Vector API':