Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将ArcGis地理坐标Lat Long wkid:4326转换为投影坐标wkid:102000/3857_Javascript_Arcgis_Heatmap_Esri_Arcgis Js Api - Fatal编程技术网

Javascript 将ArcGis地理坐标Lat Long wkid:4326转换为投影坐标wkid:102000/3857

Javascript 将ArcGis地理坐标Lat Long wkid:4326转换为投影坐标wkid:102000/3857,javascript,arcgis,heatmap,esri,arcgis-js-api,Javascript,Arcgis,Heatmap,Esri,Arcgis Js Api,使用JS ArcGis API时,是否可以从lat和long在ArcGis中创建一个点,如下所示 var testPoint = new Point(-98, 38); 还是这个 var testPoint = new Point(-98, 38, new SpatialReference({ wkid: 4326 })); 并将其转换为不同的SR,以便自动更改其x和y?例如,wkid 102000/3857 上下文:(也许您可以找到一个解决方法) 我正在使用heatmap.js在ArcGi

使用JS ArcGis API时,是否可以从lat和long在ArcGis中创建一个点,如下所示

var testPoint = new Point(-98, 38);
还是这个

var testPoint = new Point(-98, 38, new SpatialReference({ wkid: 4326 }));
并将其转换为不同的SR,以便自动更改其x和y?例如,wkid 102000/3857

上下文:(也许您可以找到一个解决方法)

我正在使用heatmap.js在ArcGis地图上绘制热图图层。我找到了一些示例,该API接收数据的方式是使用变量
data
,格式如下:

var data = [
  {
    attributes: {},
    geometry: {
      spatialReference: { wkid: ****},
      type: "point",
      x: -40,
      y: 50
    }
  },
  {another point....}
];
API本身对
数据
变量进行一些解析,然后使用此方法

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.ToScreengeMetry任务来实际进行转换,但正如我所说,它忽略了wkid


感谢您,esri.geometry.ToScreengeMetry并不是您想要的-它将提供的几何图形转换为屏幕坐标(即像素),如果您试图在地图上进行自定义覆盖,或者控制重叠地图本身的HTML元素,您可能会使用这些坐标

您需要的函数是,它以lat/long格式接收几何体,并以102100(或3857)格式返回,以便可以将其添加到标准ESRI JS映射中。docco:

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

(有趣的是,这与大多数坐标系问题正好相反,人们在输入纬度/长坐标时会问“为什么我的点没有出现在地图上”。我很荣幸能找出为什么它没有出现。:)

谢谢朱菲,这就是我要找的。是的,我对SRs做了一些研究,甚至寻找数学公式来调整坐标。我知道应该有一些东西已经实现了,但没能找到。你救了我的头疼!非常感谢你。