4

OpenLayersを使用するのはこれが初めてで、何が間違っているのかわかりません。

GeoJSONから解析した単純なポイントを表示しようとしています。データは正しく解析されているようですが(コンソールで確認しました)、どのポイントを指定しても、ベクトルレイヤーのLonLat(0,0)と思われる位置に常に表示されます。

私は何が間違っているのですか?

var map、baseLayer、placesLayer、geojsonParser;
//以下のデータは、読みやすさを向上させるために簡略化および再編成されています
var geojsonData =
{{
    "タイプ": "機能"、
     「ジオメトリ」:
     {{
        "タイプ": "ポイント"、
        「座標」:[-4.0280599594116,5.3411102294922]
     }、
     "プロパティ":
     {{
        "id":273、
        "名前":"アビジャン"
     }
};

$(document).ready(function(){

map = new OpenLayers.Map('map');
  baseLayer = new OpenLayers.Layer.OSM();
  PlacesLayer = new OpenLayers.Layer.Vector();

  geojsonParser = new OpenLayers.Format.GeoJSON();
  PlacesLayer.addFeatures(geojsonParser.read(geojsonData));

  map.addLayers([baseLayer、placesLayer]);
  map.setCenter(
    new OpenLayers.LonLat(-4、5.3).transform(
      new OpenLayers.Projection( "EPSG:4326")、
      map.getProjectionObject()
    )、5
  );

}); //ドキュメントの準備ができました
4

2 に答える 2

7

これは正しい解決策です:

var geojson_format = new OpenLayers.Format.GeoJSON({
                'internalProjection': new OpenLayers.Projection("EPSG:900913"),
                'externalProjection': new OpenLayers.Projection("EPSG:4326")
            });

ソース:https ://gist.github.com/1118357

于 2012-07-31T15:27:04.607 に答える
3

こんにちは、long/lat座標を正しい表示座標に変換する必要があるようです。

投影を宣言してから、ジオメトリフィーチャーを変換することができます。

var projWGS84 = new OpenLayers.Projection("EPSG:4326");
var proj900913 = new OpenLayers.Projection("EPSG:900913");

feature.geometry.transform(projWGS84, proj900913);

または、次のように「オンザフライ」で地図投影法を取得します。

var projWGS84 = new OpenLayers.Projection("EPSG:4326");    
feature.geometry.transform(projWGS84, map.getProjectionObject());

明らかに、私とは異なる入力投影を使用している場合は、「ESPG:4326」を必要なものに変更してください。

HTH

C

編集:

あなたの場合、あなたは次のようなものを書く必要があるでしょう:

geojsonData.geometry.transform(projWGS84, map.getProjectionObject());
于 2011-06-23T10:50:32.213 に答える