【问题标题】:Using a string as GPS coordinates使用字符串作为 GPS 坐标
【发布时间】:2012-09-02 10:52:13
【问题描述】:

我正在使用 javascript,并且我有字符串形式的 GPS 坐标,我正在尝试将它们放入 google.maps.LatLng(59.327383, 18.06747) 格式,但在决定如何操作时遇到了麻烦。我有一个变量:

GPSlocation = "(37.700421688980136, -81.84535319999998)"

我需要它进入 google.maps.LatLng(num, num) 格式。我怎样才能把这个字符串放在那里?

谢谢!

【问题讨论】:

  • 我总是嘲笑我们在纬度/经度坐标上得到的小数位数。六个 DP 足以将您精确定位到十厘米。当我们让人们坚持八位数或十位数的坐标时,我总是很开心。你有更多的东西,但这更多的是浮点不准确,而不是任何类型的精度。

标签: javascript html google-maps-api-3 gps


【解决方案1】:

您可以使用标准的字符串操作来提取值:

var GPSlocation = "(37.700421688980136, -81.84535319999998)";
var LatLng = GPSlocation.replace("(", "").replace(")", "").split(", ")
var Lat = parseFloat(LatLng[0]);
var Lng = parseFloat(LatLng[1]);

google.maps.LatLng(Lat, Lng)

【讨论】:

  • 啊,太好了,我知道如何在 Python 中做到这一点,但我没想到我也可以在 JS 中做到这一点,尽管我显然可以。谢谢!
【解决方案2】:

您可以从中创建一个数组(使用JSON.parse),然后使用apply 将坐标“提供”给方法:

GPSlocation = JSON.parse( "(37.700421688980136, -81.84535319999998)" 
                          .replace(/^\(/,'[')
                          .replace(/\)$/,']')
                        );
google.maps.LatLng.apply(null,GPSlocation);

或者,您可以替换括号并使用split 创建一个数组,并以常规方式调用方法LatLng。此方法需要额外转换为数组值的Number

GPSlocation = "(37.700421688980136, -81.84535319999998)"
               .replace(/^\(|\)$/,'')
               .split(',');
google.maps.LatLng(+GPSlocation[0],+GPSlocation[1]);

要从字符串中检索坐标数组,您还可以使用:

GPSlocation = ''.slice.call('(37.700421688980136, -81.84535319999998)',
                             1,this.length-1)
                       .split(',')
                       .map(function(a){return +a;});
google.maps.LatLng(GPSlocation[0],GPSlocation[1]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-22
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多