我有一个带有搜索栏的地图应用程序。当用户以以下格式输入纬度/经度坐标: 45.000 -122.00 时,地图将缩放到该点。必须以正确的格式在搜索栏中输入坐标,才能放大到正确的位置。我希望能够从该字符串中获取两个坐标,并将它们用作脚本中其他位置的输入。我尝试从结果字符串中使用parseFloat(),但它仅捕获第一个坐标45.000。它停在太空中。我可以删除空格,但是这样我将得到一个像这样的字符串: 45.000-122.000 。我需要能够将这些块分割成两个单独的字符串。我必须考虑到坐标将是五位数字,并且取决于坐标,可能有也可能没有前导负号。
这是我到目前为止所拥有的:
search.startup();
on(search,'search-results', function(e) {
var searchValue = e.value;
console.log ('search results',searchValue);
var coordinates = parseFloat(searchValue);
console.log(coordinates);
});
答案 0 :(得分:0)
尝试使用内置的split()
函数将您的字符串转换为具有两个坐标值的数组。然后您可以从那里解析。试试这个:
let value = '45.000 -122.000';
let array = value.split(' ');
console.log(parseFloat(array[0]), parseFloat(array[1]));
答案 1 :(得分:0)
谢谢。这是我找到的另一个解决方案:
str_1 = searchValue.split(/\s(.+)/)[0]; //everything before the first space
str_2 = searchValue.split(/\s(.+)/)[1]; //everything after the first space
var latStr = parseFloat(str_1);
var lonStr = parseFloat(str_2);
答案 2 :(得分:0)
尝试使用正则表达式
search.startup();
on(search,'search-results', function(e) {
var searchValue = e.value;
var regex = /(\d+\.\d+)\s+((?:-\s*)?\d+\.\d+)/;
var match = regex.exec(searchValue);
console.log ('search results', searchValue);
if (match) {
var coordinates = [parseFloat(match[1]), parseFloat(match[2])];
console.log(coordinates);
}
});