我想从ESRI几何中提取经度和纬度,并将它们连接成一个长字符串(用于API调用)。
我正在努力完成这个
几何体的ESRI文档(geometry specs)显示了对象的结构,但我的API调用需要以下格式的纬度/经度:
long1,lat1,long2,lat2,long3,lat3 ... long1, lat1
我所要做的就是处理长/拉一点点。从ESRI文档中提供一个非常简单的示例
MyTest = {
"rings": [
[
[-97.06138, 32.837],
[-97.06133, 32.836],
[-97.06124, 32.834],
[-97.06127, 32.832],
[-97.06138, 32.837]
]
],
"spatialReference": {
"wkid": 4326
}
};
alert(JSON.stringify(MyTest.rings[0]));
会给我戒指(经度/纬度)(注意第一个长/纬度重复为最后一个长/纬度)
我似乎无法弄清楚如何剥离[和]创建一个只有经度和纬度的字符串。例如:
myTest2 = MyTest.rings[0]; // get the longitudes and latitudes
myTest3 = JSON.stringify(myTest2);
myTest4 = myTest3.replace("[","");
alert(JSON.stringify(myTest2));
alert(JSON.stringify(myTest4));
替换将剥离其中一个括号,但是我不能让它像这篇文章stack javascript replace那样进行全局替换,因为我的编程环境都在ColdFusion中,我需要关于模式的引号。
有人可以指出我的错误吗?谢谢!
答案 0 :(得分:2)
您可以使用Example
尝试此操作(join())MyTest = { "rings": [...] };
var str = MyTest.rings.join();
结果(在str
中)将是:
-97.06138,32.837,-97.06133,32.836,-97.06124,32.834,-97.06127,32.832,-97.06138,32.837
答案 1 :(得分:1)
你有一个对象,使用它 - 不要使用字符串化版本。
var coords = MyTest.rings[0];
var list = [];
for ( var i = 0; i < coords.length; ++i )
{
list.push(coords[i][0]);
list.push(coords[i][1]);
}
var str = list.join(',');
// str is now "-97.06138,32.837,-97.06133...(etc.)"
答案 2 :(得分:0)
这些是绝对的基础知识,但您不需要更换任何东西。 []
只是一个JavaScript数组而不是字符串。
MyTest.rings.map(function (r) { return r.join(','); }).join(',');
// "-97.06138,32.837,-97.06133,32.836,-97.06124,32.834,-97.06127,32.832,-97.06138,32.837"
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/join
答案 3 :(得分:0)