我有一个json文件,每行包含文件名和边界框:
{ "type": "Feature", "properties": { "name": "images\/gis\/json_Andros1.png" }, "geometry": { "type" : "LineString", "coordinates": [[37.8416750531,24.7951207305],[37.8418346487,24.7954102608]] } }
我通过以下方式访问该文件:
var raster_group = new L.featureGroup([]);
$.getJSON($('link[id="rasters_geojson"]').attr("href"), function(data) {
var geojson = L.geoJson(data, {
onEachFeature: function (feature, layer) {
var rasterfilename = (String(feature.properties['name']));
var rastercoordinates = L.GeoJSON.coordsToLatLngs(feature.geometry['coordinates'],0);
alert(rasterfilename); alert(rastercoordinates);
layer = new L.imageOverlay(rasterfilename, rastercoordinates);
return layer;
}
});
geojson.addTo(raster_group);
});
错误是NS_ERROR_NOT_AVAILABLE:
另一个问题。如何只加载地图边界框内的图像?
答案 0 :(得分:0)
你的路线
var rastercoordinates = coordsToLatLngs(feature.properties['geometry'],0);
缺少方法的类。
应该是这样的
var rastercoordinates = L.GeoJSON.coordsToLatLngs(feature.properties['geometry'],0);
答案 1 :(得分:0)
我非常感谢snkashis的帮助。事实证明事情更加复杂。
首先,我遇到了传单反转从json读取的坐标的问题。然后我遇到了不同类型对象的问题,这些问题导致了传单本身的错误(递归过多,未定义的变量等)。
但是下面的代码有效,所以我将其上传给其他人使用:
mapinitialbounds = map.getBounds();
var raster_group = new L.featureGroup([]);
$.getJSON($('link[id="rasters_geojson"]').attr("href"), function(data) {
var geojson = L.geoJson(data, {
onEachFeature: function (feature, layer) {
var rasterfilename = (String(feature.properties['name']));
var rastercoordinates = [feature.geometry['coordinates'][0],feature.geometry['coordinates'][1]];
var line = new L.polyline(rastercoordinates);
if (mapinitialbounds.contains(line.getBounds())) {
layer = new L.imageOverlay(rasterfilename, rastercoordinates);
layer.addTo(raster_group);
}
return layer;
}
});
});
map.addLayer(raster_group);
我发现需要创建一条折线来获得不必要的边界。你认为上面的代码可以简化吗?