4

JS ArcGis API を使用する場合、このように緯度と経度から ArcGis にポイントを作成することは可能ですか?

var testPoint = new Point(-98, 38);

またはこれ

var testPoint = new Point(-98, 38, new SpatialReference({ wkid: 4326 }));

x と y が自動的に変更されるように別の SR に変換しますか? たとえば wkid 102000/3857 に?

コンテキスト: (回避策が見つかるかもしれません)

私は heatmap.js を使用して、ArcGis マップに heatmapLayers を描画しています。いくつかの例を見つけました。この API がデータを取り込む方法はdata、次の形式の変数を使用しています。

var data = [
  {
    attributes: {},
    geometry: {
      spatialReference: { wkid: ****},
      type: "point",
      x: -40,
      y: 50
    }
  },
  {another point....}
];

API自体がdata変数を解析してから、このメソッドを使用します

screenGeometry = esri.geometry.toScreenGeometry(this._map.extent, this._map.width, this._map.height, parsedData.data[xParsed][yParsed].dataPoint);

parsedData.data[xParsed][yParsed].dataPoint最終的にヒートマップを描画する前に、解析されたポイント ( ) を変換します。

主な問題は、ポイント (前のコードの ****) にどの wkid を渡しても、wkid: 102000 として解釈されることです。そのため、事前に自分で座標変換を行いたかったのです。

実際にその変換を行うのはタスクであると思いesri.geometry.toScreenGeometryますが、前述のとおり、wkid は無視されます。

事前に感謝します。

4

1 に答える 1

6

esri.geometry.toScreenGeometry探しているものではありません - 提供されたジオメトリを画面座標 (つまりピクセル) に変換します。これは、マップ上でカスタム オーバーレイを実行しようとしている場合や、マップ自体に重なる HTML 要素を制御しようとしている場合におそらく使用するでしょう。

必要な関数はesri.geometry.webMercatorUtils.geographicToWebMercator、緯度/経度でジオメトリを取り込み、具体的には 102100 (または 3857) で返すため、標準の ESRI JS マップに追加できます。ドコ より:

require([
  "esri/geometry/webMercatorUtils", ... 
], function(webMercatorUtils, ... ) {
  var geom = webMercatorUtils.geographicToWebMercator(candidate.location);
  ...
});

(面白いことに、これは、緯度/経度座標をフィードするときに「なぜ私のポイントがマップに表示されないのか」と人々が尋ねる、SO に関するほとんどの座標系の質問とは反対です。表示されない理由を解明してくれてありがとう。 :) )

于 2014-08-18T04:54:08.423 に答える