2016-05-17 7 views
0

私はbingマップでOpenLayersを使用しています。マーカーを追加しましたが、別の場所に表示しています。私はビン地図で使用した同じ座標とそれは正しい場所に表示されます。ここで別の場所に投影されたOpenLayers Ving Bing Maps

bing search result

enter image description here

これはOpneLayersは

enter image description here

$(function() { 

     var tileLayer = new ol.layer.Tile({ 
      source: new ol.source.BingMaps({ 
       key: 'Armnl..', 
       imagerySet: 'Aerial' 
      }) 
     }); 

     var map = new ol.Map({ 
      layers: [tileLayer], 
      target: 'map', 
      view: new ol.View({ 
       center: [-22.3869608, -49.7602708], 
       zoom: 5, 
      }) 
     }); 

     var p1 = new ol.Feature({ 
      geometry: new ol.geom.Point([-22.3869608, -49.7602708]) 
     }); 


     var vectorSource = new ol.source.Vector({ 
      features: [p1] 
     }); 

     var vectorLayer = new ol.layer.Vector({ 
      source: vectorSource 
     }); 

     map.addLayer(vectorLayer); 

    }); 

は私が座標を変換する必要があるでしょうなりますか?

答えて

1

はい、確かに、あなたの座標をEPSG:3857に変換する必要があります。

あなたはEPSG使用してマップを構築する2つの異なるオプション

1)を持っている:4326。つまり、クライアントのタイルの再投影が行われます。そう

var map = new ol.Map({ layers: [tileLayer], target: 'map', view: new ol.View({ projection:'EPSG:4326', center: [-22.3869608, -49.7602708], zoom: 5, }) });

2を行うには

)あなたは 'EPSG:3857' にあなたのセンターをtranfrom。この投影法は、ol.view構成内で指定しないで使用します。 (マップに添付された最初のタイルレイヤーから自動的に投影された投影)。あなたのベクタポイントのためにそう

var map = new ol.Map({ layers: [tileLayer], target: 'map', view: new ol.View({ center: ol.proj.transform([-22.3869608, -49.7602708], 'EPSG:4326','EPSG:3857'); zoom: 5, }) });

終了を行うに

var p1 = new ol.Feature({ geometry: new ol.geom.Point(ol.proj.transform([-22.3869608, -49.7602708], 'EPSG:4326','EPSG:3857')) });

+0

私は両方のオプションを試してみましたが、それでも、間違った位置に追加したマーカー。どのようにして未知の座標をEPSG:3857に変換できますか? –

+0

この 'center:ol.proj.transform([ - 22.3869608、-49.7602708]'の座標をこの 'center:ol.proj.transform([ - 49.7602708、-22.3869608]')にちょうど反転してください。あなたの座標は不明ではありませんwgs84 lon/lat。 – pavlos

+0

ああ申し訳ありません、今すぐ正しい場所にあります:) –

関連する問題