2015-05-29 49 views
0

我有一個JSON文件,包含了文件名和邊界框的每一行中的單張地圖添加圖像:使用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);

+0

謝謝,但光柵仍未加載。它看起來好像onEachFeature沒有運行。 –

+0

你可以把它放在演示網站上,這樣我們就可以看到它在運行? – snkashis

+0

在http://aristeia.ha.uth.gr/site.php?id=10000040中可以看到該項目,但圖像是隱式加載的。我想要的只是加載頁面時,只加載地圖內JSON的柵格圖像。 –

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); 

我覺得有必要建立一個折線得到邊界unneccesary複雜。你認爲上面的代碼可以簡化嗎?