ArcGIS Javascript APIでのLat, LngとXYZとの相互変換
距離を考慮した計算が必要なときは、XY座標系に直してから計算しないと多分だめなので、 現在表示している地図上のXY座標系と、Lat, Lng(緯度経度)とを相互変換する方法を調べてみました。
緯度経度からXY座標へ
import * as webMercatorUtils from "@arcgis/core/geometry/support/webMercatorUtils"; webMercatorUtils.lngLatToXY(lng, lat)
自分の環境だとXY座標の単位はメートル?と勘違いしたが、メートルではなさそう。座標値あたりの距離は緯度によって距離は変わってきそう。 距離を指定して、次の点を求めることはできるのかな。。。
XY座標から緯度経度へ
import * as webMercatorUtils from "@arcgis/core/geometry/support/webMercatorUtils"; webMercatorUtils.xyToLngLat(x, y)
表示画面内の変換
function xyToLatLng(view: SceneView, x: number, y: number) { const pt = view.toMap({ x, y }); const { longitude, latitude } = pt; return { longitude, latitude }; } function latLngToXY(view: SceneView, latitude: number, longitude: number) { const { x, y } = view.toScreen(new Point({ latitude, longitude })); return {x, y}; }
ブラウザ内に表示している範囲においてのみ変換ができましたが、 画面範囲になると負の値になったり、nullが帰ってきたりでうまく機能しないことがあります。
References
https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-support-webMercatorUtils.htmldevelopers.arcgis.com https://developers.arcgis.com/javascript/latest/api-reference/esri-views-SceneView.htmldevelopers.arcgis.com