2012-04-27 4 views
1

GeoJSON 파일이 있습니다. 그러나 문제는이 파일의 투영을 모른다는 것입니다. 이제베이스 맵 (OSM)에 오버레이하고 싶습니다. 어떻게해야합니까? 이 GeoJSON 파일에는 스톡홀름 지역에 대한 기능이 포함되어 있습니다. 어떻게이 테두리 상자를 설정할 수 있습니까? 내가 호스팅 사이트에서 openlayers 예를 몇 가지 시도했다. 그러나, 그것들은 나를 위해 일하지 않습니다. 나는 (http://dev.openlayers.org/releases/OpenLayers-2.11/examples/all-overlays.html)에서 내가 원한 것과 매우 흡사 한 한 가지 예가있다. 내가 경계 상자를 사용하는 소스 코드를 확인했다. 그러나 문제는 경계 상자를 제거하면이 예제가 작동하지 않는다는 것입니다 (이 경우 주어진 데이터와 연결됨). 나 몰라, 내 json 파일에 문제가있어? Bellow, 샘플 데이터를 몇 가지 제공했습니다. 형식이 괜찮습니까? 내가 말했듯이 나는 다른 방식으로 시도했다. 나는 스크립트에서 json 파일을 읽을 때가있다. 하지만 기능 오버레이지도는 표시 할 수 없습니다. 벨로우, 샘플 코드를 주었는데, 어떻게 시도했는지 보여줍니다. 사전에GeoJSON 파일에서 경계 상자 값을 가져 오는 방법은 무엇입니까?

{ 
"type": "FeatureCollection", 
"features": [ 
{ "type": "Feature", "properties": { "FNODE_": 387603, "TNODE_": 387603, "LPOLY_": 0, "RPOLY_": 0, "LENGTH": 89.206900, "ROADS_SWER": 519006, "ROADS_SW_1": 519006, "REF": "", "TYPE": "residential", "ONEWAY": 8224, "BRIDGE": 8224, "MAXSPEED": 0, "LENGTH_M": 89.500000, "ID": 0, "dist_fnode": 13655.200000, "dist_tnode": 13655.200000 }, "geometry": { "type": "LineString", "coordinates": [ [ 676868.875000, 6569872.000000 ], [ 676882.437500, 6569861.000000 ], [ 676894.062500, 6569851.500000 ], [ 676894.500000, 6569844.500000 ], [ 676891.812500, 6569840.500000 ], [ 676887.312500, 6569841.000000 ], [ 676882.187500, 6569843.000000 ], [ 676875.250000, 6569850.000000 ], [ 676868.125000, 6569858.500000 ], [ 676866.500000, 6569867.000000 ], [ 676868.875000, 6569872.000000 ] ] } } 
, 

{ "type": "Feature", "properties": { "FNODE_": 387723, "TNODE_": 387724, "LPOLY_": 0, "RPOLY_": 0, "LENGTH": 9.581310, "ROADS_SWER": 519163, "ROADS_SW_1": 519163, "REF": "", "TYPE": "service", "ONEWAY": 8224, "BRIDGE": 8224, "MAXSPEED": 0, "LENGTH_M": 9.500000, "ID": 1, "dist_fnode": 13705.100000, "dist_tnode": 13695.600000 }, "geometry": { "type": "LineString", "coordinates": [ [ 677125.375000, 6569906.500000 ], [ 677133.437500, 6569911.500000 ] ] } } 
, 
.. 
.. 
] 
} 

코드 샘플 ----

//OSM Layer----------------------------------------------- 
var layer = new OpenLayers.Layer.OSM("Simple OSM Map"); 

//GeoJSON Layer------------------------------------------- 
var vector_format = new OpenLayers.Format.GeoJSON({}); 
var vector_protocol = new OpenLayers.Protocol.HTTP({ 
    url: 'ml/roads.json', 
    format: vector_format 
}); 
var vector_strategies = [new OpenLayers.Strategy.Fixed()]; 
var vector_layer = new OpenLayers.Layer.Vector('More Advanced Vector Layer',{ 
    protocol: vector_protocol, 
    strategies: vector_strategies, 
    isBaseLayer: false 
}); 

var options = { 
    layers: [layer, vector_layer] 
}; 
var map = new OpenLayers.Map("map", options); 
//Projection----------------------------------------------- 
map.setCenter(
    new OpenLayers.LonLat(18.068611, 59.329444).transform(
     new OpenLayers.Projection("EPSG:4326"), 
      map.getProjectionObject() 
    ), 10 
); 

감사합니다. 난 아직도 당신이지도 생성자에 프로젝션을 설정해야한다고 생각

답변

1
vector_layer.events.on({ 
    loadend: function() { 
     map.zoomToExtent(vector_layer.getDataExtent()); 
    } 
}); 

...

관련 문제