ArcGIS baseMap を使用して Openlayers マップに描画することにより、いくつかの座標を含む gpx ファイルを取得しようとしていました。
ポリラインを描いて gpx を作成し、それを Google Earth で開くと、前に描いたものとは異なり、元の線とはまったく異なり、描いた場所に配置されていません。投影の問題であることはわかっています。ジオメトリ オブジェクトをメルカトルから地理に変換しようとしましたが、地図座標から地理座標を直接取得しましたが、何もしませんでした。「spatialReference」を 4362 に設定してから 3857 に設定しようとしましたが、何も変わりません。
その .gpx を gps デバイスで使用します (来週スバールバル諸島に行き、スノーモービルでロングイェールビーンを一周するには gps トラックが必要です。町の外に生命の兆候はありません。 、だから私はそれに備える必要があります)、私がそこにいるとき、彼らが私に借りるデバイスの出力を正しく調整しますが、今は.gpxファイルにほぼ正しい座標を保存する必要があります.
地図からこれらの座標を取得しています: lat: 61.22582068741976 lon: 4.684820015391338 代わりに 78. lat と 15. lon 付近の何かを期待している場合。
これは、マップを作成するために使用するコードの一部です (問題の原因ではないことがわかっているコードは貼り付けていません)。
var initialExtent = new esri.geometry.Extent({"xmin":505615.5801124362,"ymin":8678955.717187276,"xmax":525935.6207525175,"ymax":8689168.654279819,"spatialReference":{"wkid":32633,"latestWkid":32633}});
map = map = new esri.Map("map", {extent: initialExtent, logo : false});
basemapURL = "http://geodata.npolar.no/ArcGIS/rest/services/inspire1/NP_TopoSvalbard_U33_CHL/MapServer/";
map.addLayer(new esri.layers.ArcGISTiledMapServiceLayer(basemapURL));
ここでは、そのマップのデフォルトである wkid 32633 を使用しています。既知のものに変更しようとしましたが、何も起こりませんでした。
そして今、座標を取得するために使用するコード:
dojo.connect(tb, "onDrawEnd", getCoords);
function getCoords(geo) {
var r=confirm("Salvare tracciato?");
if (r==true) {
geo = esri.geometry.webMercatorToGeographic(geo);
for ( var path = 0; path < geo.paths.length; path ++ ) {
for ( var pt = 0; pt < geo.paths[path].length; pt++ ) {
tra += '<wpt lat="'+geo.paths[path][pt][1]+'" lon="'+geo.paths[path][pt][0]+'"></wpt>';
}
}
}
}
「tra」は、他の関数を使用して gpx ファイルに挿入するすべてのコードを格納する変数です。「webMercatorToGeographic」関数は、マップ座標を地理座標に変換します。