使用JS ArcGis API时,是否可以在lat中创建一个点,并且像这样长
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地图上绘制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。
先谢谢,
答案 0 :(得分:6)
esri.geometry.toScreenGeometry
不是您正在寻找的 - 将提供的几何图形转换为屏幕坐标(即像素),如果您尝试在地图上进行自定义叠加,则可能会使用这些坐标,或控制与地图本身重叠的HTML元素。
你想要的函数是esri.geometry.webMercatorUtils.geographicToWebMercator
,它接受lat / long中的几何,并在102100(或3857)中返回它,因此它可以添加到标准的ESRI JS映射中。来自docco:
require([
"esri/geometry/webMercatorUtils", ...
], function(webMercatorUtils, ... ) {
var geom = webMercatorUtils.geographicToWebMercator(candidate.location);
...
});
(有趣的是,这与SO上的大多数坐标系问题相反,人们会问这些问题"为什么我的观点不会出现在地图上?当他们用纬度/经度坐标输入时。弄清楚它为什么不出现。:))