JavaScript从字符串拆分坐标

时间:2018-10-01 16:35:24

标签: javascript

我有一个带有搜索栏的地图应用程序。当用户以以下格式输入纬度/经度坐标: 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);
  });

3 个答案:

答案 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);
  }
});