2016-10-20 25 views
-2

我是JavaScript的初學者,我正在努力將GeoJSON轉換爲javascript對象數組。(地理)JSON到對象數組

所以用JSON.parse我解析我的服務器端生成的JSON到一個JSON對象。到現在爲止還挺好。

Google方法addGeoJson返回我[object(Array)]。但是這種方法顯示我在地圖上加載了這個形狀。我稍後需要它,當我想放大或縮小時顯示不同的粒度。

我需要從[object]中生成[object(Array)]。我該怎麼做呢?走出 「generatedGeoJsonPlz2」

的這是我到目前爲止有:

var generatedGeoJsonPlz1 = JSON.parse(geoJsonString); 
var generatedGeoJsonPlz2 = JSON.parse(geoJsonString2); 

var plz1area = plz.data.addGeoJson(generatedGeoJsonPlz1); // returns [object (Array)] 

plz.addListener('zoom_changed', function() { 
    var zoom = plz.getZoom(); 
    if (zoom == 8) { 
    for (var i = 0; i < plz1area.length; i++) { 
     plz.data.remove(plz1area[i]); 
    } 
    plz.data.addGeoJson(generatedGeoJsonPlz2); 
    } 
    // here i´m struggling. i need the [object (Array)] to delete the old Json 
    else if (zoom == 5) { 
    var plz2area = generatedGeoJsonPlz2; 

    for (var i = 0; i < plz2area.length; i++) { 
     plz.data.remove(plz2area[i]); 
    } 
    plz.data.addGeoJson(generatedGeoJsonPlz1); 
    } 
} 

謝謝! 基督教

回答

1

您可以存儲addGeoJson(generatedGeoJsonPlz2)的結果,以便稍後將其刪除。

這可能會爲你工作:

var generatedGeoJsonPlz1 = JSON.parse(geoJsonString); 
var generatedGeoJsonPlz2 = JSON.parse(geoJsonString2); 

var plz1area = plz.data.addGeoJson(generatedGeoJsonPlz1); 
// Here I already define the variable plz2area 
var plz2area; 

plz.addListener('zoom_changed', function() { 
    var zoom = plz.getZoom(); 
    if (zoom == 8) { 
    for (var i = 0; i < plz1area.length; i++) { 
     plz.data.remove(plz1area[i]); 
    } 
    plz2area = plz.data.addGeoJson(generatedGeoJsonPlz2); 
    } else if (zoom == 5) { 
    // Only remove plz2area from the map, if it has been initialized before 
    if (plz2area) { 
     for (var i = 0; i < plz2area.length; i++) { 
     plz.data.remove(plz2area[i]); 
     } 
    } 
    plz.data.addGeoJson(generatedGeoJsonPlz1); 
    } 
} 
+0

I'll嘗試一下!謝謝你到目前爲止 – Christian

+0

太好了,請告訴我它是否有效:) – mrunde

+0

不幸的是它不工作。在函數中未定義plz2area,所以它不會通過forloop來刪除 – Christian