1

私はレイヤーを開くのは比較的新しいですが、Google Maps API にはかなり慣れています。

以前にGoogleマップで次のことを行いました。私は基本的に、オープンレイヤー/オープンストリートマップで同じ機能を複製しようとしています. しかし、私はパズルに出くわしました。

map = new OpenLayers.Map("map");

wms = new OpenLayers.Layer.WMS( "OpenLayers WMS", "http://vmap0.tiles.osgeo.org/wms/vmap0", {layers: 'basic'} );
osm = new OpenLayers.Layer.OSM();

map.addLayer(wms);

epsg4326 =  new OpenLayers.Projection("EPSG:4326"); //WGS 1984 projection
projectTo = map.getProjectionObject(); //The map projection (Spherical Mercator)

var lonLat = new OpenLayers.LonLat(-71.3699930, 43.5412410).transform(epsg4326, projectTo);
var zoom=12;
map.setCenter (lonLat, zoom);

var vectorLayer = new OpenLayers.Layer.Vector("Overlay");
var encoded = "_p~iF~ps|U_ulLnnqC_mqNvxq`@";
var format = new OpenLayers.Format.EncodedPolyline({geometryType:"linestring"});
vectorLayer.addFeatures(format.read(encoded));
map.addLayer(vectorLayer);

コードが書かれている方法は現在機能しています。WMS マップを読み込み、ポリラインを表示し、マップを正しく中央に配置します。しかし、それは私が望んでいることではなく、OSM マップをロードしたいのです。したがって、この行を変更すると:

map.addLayer(wms);

これに:

map.addLayer(osm);

OSM マップは正常にロードされますが、ポリラインは表示されません。私はこれで非常に長い間遊んできましたが、これを機能させることができないようです。投影と何か関係がありますか?ありがとう!

4

1 に答える 1

1

あなたがしなければならないことは、変化することです

vectorLayer.addFeatures(format.read(encoded));

次へ

vectorLayer.addFeatures(new OpenLayers.Feature.Vector(format.read(encoded).geometry.transform('EPSG:4326', 'EPSG:3857')));

私はまったく同じ問題を抱えていたので、それを解決しました。

于 2014-02-14T08:45:56.037 に答える